Erreur javascript

2 participants

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résolu Erreur javascript

Message par chattigre Sam 20 Nov 2021 - 18:46

Bonjour,

J'ai développé ce JS à partir d'une vieille intervention d'Ea pour phpBB2 (là le code est bien pour phpBB3).
Il ne me remonte aucune erreur en fonctionnement cependant avec un vérificateur JS (JQuery activé bien sûr) j'ai cette erreur qui est remontée :
Expected an assignment or function call and instead saw an expression. Ligne 41:5

Le code en question (pour transformer le bouton supprimer en bouton de division dans la corbeille) :
Code:
function removeAccents(str) {
   return str.replace(/[ÀÁÂÃÄÅ]/g, 'A').replace(/[àáâãäå]/g, 'a').replace(/[ÒÓÔÕÕÖØ]/g, 'O').replace(/[òóôõöø]/g, 'o').replace(/[ÈÉÊË]/g, 'E').replace(/[èéêëð]/g, 'e').replace(/Ç/g, 'C').replace(/ç/g, 'c').replace(/Ð/g, 'D').replace(/[ÌÍÎÏ]/g, 'I').replace(/[ìíîï]/g, 'i').replace(/[ÙÚÛÜ]/g, 'U').replace(/[ùúûü]/g, 'u').replace(/Ñ/g, 'N').replace(/ñ/g, 'n').replace(/Š/g, 'S').replace(/š/g, 's').replace(/[Ÿ]/g, 'Y').replace(/[ÿý]/g, 'y').replace(/Ž/g, 'Z').replace(/ž/g, 'z');
}

$(function() {
   $(".profile-icons .i_icon_delete").attr("title", "Envoyer ce message à la corbeille");
   $(".profile-icons .i_icon_delete").attr("alt", "Envoyer ce message à la corbeille");
   $(".profile-icons .i_icon_delete").parent().attr("title", "Envoyer ce message à la corbeille");
   var page = parseInt($(".pagination strong").first().text(), 10);
   if (page == 1) {
      $(".profile-icons .i_icon_delete").first().remove();
   }
});

$(function() {
   $("a[href^='/modcp']").first().length && (
      $('.profile-icons .i_icon_delete').parent().click(function(e) {
         e.preventDefault();
         var usertitle = prompt("Entrez le titre du sujet");
         if (usertitle != null) {
            $.post('/modcp?tid=' + $(this).attr('href').replace(/^\/post\?.+tid=([0-9a-z]+)&mode.+$/, '$1'), {
               split_type_all: 'Diviser les messages sélectionnés',
               subject: usertitle /*'Corbeille ' + ' (' + ((new Date().getDate() < 10) ? '0' : '') + new Date().getDate() + '/' + ((new Date().getMonth() < 10) ? '0' : '') + (new Date().getMonth() + 1) + ') ' + removeAccents($('.page-title a').last().text()) + ' [' + window.location.href.replace(/https?:\/\/[^\/]+\/t([1-9][0-9]*)(p[1-9][0-9]*)?-.*$/, '$1') + ']'*/ ,
               new_forum_id: "f10",
               tid: $(this).attr('href').replace(/^\/post\?.+tid=([0-9a-z]+)&mode.+$/, '$1'),
               f: $('.pathname-box a.nav').last().attr('href').replace(/^\/f([1-9][0-9]*)-.*$/, '$1'),
               t: window.location.href.replace(/https?:\/\/[^\/]+\/t([1-9][0-9]*)(p[1-9][0-9]*)?-.*$/, '$1'),
               mode: 'split',
               "post_id_list[]": $(this).attr('href').replace(/^.+p=([1-9][0-9]*)&.+$/, '$1')
            });
            $(this).closest(".post").slideUp(500, function() {
               $(this).closest("post").remove();
               alert("Message envoyé à la corbeille.");
            });
         } else {
            e.preventDefault();
            return false;
         }
          return false;
      })
   );
});
Dois-je ignorer cette erreur qui n'apparait que sur le vérificateur et pas dans la console de Firefox, y-a-t-il quelque chose à corriger avant de mettre le code définitivement en service ?... Il est fonctionnel, mais j'ai horreur des petites erreurs qui créent un confit plus tard Very Happy
(Validateur utilisé (option JQuery activée ^^) : https://beautifytools.com/javascript-validator.php )

Merci !
chattigre

chattigre
Aidactif
Aidactif

Masculin
Messages : 3595
Inscrit(e) le : 17/04/2019

https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Erreur javascript

Message par Toryudo Sam 20 Nov 2021 - 19:49

Hello !

J'imagine que le Validator n'aime pas cette façon d'écrire une "condition" :
Code:
$("a[href^='/modcp']").first().length && (...);

Si j'écris au plus simple un code comme
Code:
1 && 1;
Il me jette pour la même raison. En théorie, ça marche, il fait le test de présence d'un lien modcp et si le résultat est true, alors il fait la suite... mais en pratique, je pense qu'il préfère que tu mettes un if classique, plus propre et plus lisible :

Code:
if ($("a[href^='/modcp']").first().length) {
 ... le code ici
}

Ce qui donnerait :
Code:
function removeAccents(str) {
   return str.replace(/[ÀÁÂÃÄÅ]/g, 'A').replace(/[àáâãäå]/g, 'a').replace(/[ÒÓÔÕÕÖØ]/g, 'O').replace(/[òóôõöø]/g, 'o').replace(/[ÈÉÊË]/g, 'E').replace(/[èéêëð]/g, 'e').replace(/Ç/g, 'C').replace(/ç/g, 'c').replace(/Ð/g, 'D').replace(/[ÌÍÎÏ]/g, 'I').replace(/[ìíîï]/g, 'i').replace(/[ÙÚÛÜ]/g, 'U').replace(/[ùúûü]/g, 'u').replace(/Ñ/g, 'N').replace(/ñ/g, 'n').replace(/Š/g, 'S').replace(/š/g, 's').replace(/[Ÿ]/g, 'Y').replace(/[ÿý]/g, 'y').replace(/Ž/g, 'Z').replace(/ž/g, 'z');
}
 
$(function() {
   $(".profile-icons .i_icon_delete").attr("title", "Envoyer ce message à la corbeille");
   $(".profile-icons .i_icon_delete").attr("alt", "Envoyer ce message à la corbeille");
   $(".profile-icons .i_icon_delete").parent().attr("title", "Envoyer ce message à la corbeille");
   var page = parseInt($(".pagination strong").first().text(), 10);
   if (page == 1) {
      $(".profile-icons .i_icon_delete").first().remove();
   }
});

$(function() {
   if ($("a[href^='/modcp']").first().length) {
      $('.profile-icons .i_icon_delete').parent().click(function(e) {
         e.preventDefault();
         var usertitle = prompt("Entrez le titre du sujet");
         if (usertitle != null) {
            $.post('/modcp?tid=' + $(this).attr('href').replace(/^\/post\?.+tid=([0-9a-z]+)&mode.+$/, '$1'), {
               split_type_all: 'Diviser les messages sélectionnés',
               subject: usertitle /*'Corbeille ' + ' (' + ((new Date().getDate() < 10) ? '0' : '') + new Date().getDate() + '/' + ((new Date().getMonth() < 10) ? '0' : '') + (new Date().getMonth() + 1) + ') ' + removeAccents($('.page-title a').last().text()) + ' [' + window.location.href.replace(/https?:\/\/[^\/]+\/t([1-9][0-9]*)(p[1-9][0-9]*)?-.*$/, '$1') + ']'*/ ,
               new_forum_id: "f10",
               tid: $(this).attr('href').replace(/^\/post\?.+tid=([0-9a-z]+)&mode.+$/, '$1'),
               f: $('.pathname-box a.nav').last().attr('href').replace(/^\/f([1-9][0-9]*)-.*$/, '$1'),
               t: window.location.href.replace(/https?:\/\/[^\/]+\/t([1-9][0-9]*)(p[1-9][0-9]*)?-.*$/, '$1'),
               mode: 'split',
               "post_id_list[]": $(this).attr('href').replace(/^.+p=([1-9][0-9]*)&.+$/, '$1')
            });
            $(this).closest(".post").slideUp(500, function() {
               $(this).closest("post").remove();
               alert("Message envoyé à la corbeille.");
            });
         } else {
            e.preventDefault();
            return false;
         }
          return false;
      });
   }
});

Je te laisse retester, mais le Validator ne gueule plus avec ce code !
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1372
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Erreur javascript

Message par chattigre Sam 20 Nov 2021 - 20:11

Salut,

C'est ce que j'avais pensé, mais du coup on a bien eu la même idée ^^

Je préférai demander pour pas faire de bêtise, voilà qui répond à ma question ! Smile
J'ai réussi à adapter ce code mais j'aurais été capable de le planter juste avec ça Razz 

Merci !


chattigre
Aidactif

Pour une aide efficace...
Right Mettez un titre explicite
Right Communiquez vos personnalisations
Right Rendez le forum et votre problème directement visible

Right Si votre problème est résolu, éditez votre premier message et cochez l'icône résolu
Right Consultez la liste des Questions et réponses fréquentes avant d'ouvrir un sujet si nécessaire
chattigre

chattigre
Aidactif
Aidactif

Masculin
Messages : 3595
Inscrit(e) le : 17/04/2019

https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum