Laurent > Mais bien sûr qu'il y a un return... et l'article d'openweb, je l'avais lu... il y a un certain temps certes, mais je l'avais lu...
Je ne vois franchement pas ce qu'il y a de si mal dans ce script, celui d'openweb n'est déjà pas si différent que ça. window.open(this.href); return false; au lieu de return !window.open(this.href); c'est une sorte de compactage...
Je vais expliquer le fonctionnement pour enlever les doutes : si javascript est désactivé, l'onclick n'a pas lieu et le lien normal est ouvert. Si javascript est activé, le onclick est exécuté. Si la popup est crée correctement, donc qu'aucun plugin antipopup ne l'a bloquée, la fonction window.open retourne normalement un objet représentant la fenêtre. Comme cet objet vaut autre chose que 0, false, chaîne vide ou null, on supposera qu'il vaut true. Grâce au point d'exclamation, on renvoie l'inverse, c'est-à-dire false. Si, pour une des raisons indiquées ci-dessus, la popup n'a pas été crée, window.open ne renverra rien, false, ou null, et avec le point d'exclamation on renvoie true, ce qui a pour conséquence d'ouvrir le lien dans la fenêtre courante, comportement normal si javascript avait été désactivé.
En principe, ça marche avec firefox et IE, dans tous les cas.
Si tu trouves toujours mon javascript mauvais, j'aimerais avoir un peu plus d'explications sur pourquoi est-il mauvais ? Un contre-exemple serait le bienvenu.
Modifié par QuentinC (22 Dec 2005 - 05:46)