11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

alors mon problème est que quand je fais un window.open dans un lien (donc pour ouvrir un popup) sous FF/Moz la/le popup s'ouvre bien , mais la page qui contenait le lien est remplacée par une page blanche avec "[object Window]" écrit dedans.

je ne veux pas discuter du bien fondé de la popup.... je suis pas là pour ça Smiley cligne
mais j'aimerais comprendre pour quoi ça me fait ça sous FF 1.5.0.2 et Mozilla.

j'ai essayé comme ça :
<a href="http://www.monsite.com/videos/les_premiers_mots.htm" onclick="window.open(this.href,'video','width=500,height=300'); return false;" title="Voir" >vidéo</a>

et comme ça :
<a href="javascript:window.open('http://www.monsite.com/videos/les_premiers_mots.htm','video','width=500,height=300');" title="Voir" >vidéo</a>


idem même problème.

pour tester en vrai

Ben pourquoi ? Smiley decu
j'ai raté un truc ?

merci de votre aide

mrbbp
Modifié par mrbbp (03 May 2006 - 07:58)
Je te conseille cette syntaxe :
<a href="..." onclick="return !window.open(this.href);">...</a>

Toutes les fonctions exécutées en onclick ou en href="javascript:..." et renvoyant une valeur autre que true ou false afficheront le résultat de la fonction.
merci une masse Quentin.

ça marche du feu de dieux(prophète.. on s'en fout).
la syntaxe me semble un peu retord mais ça fonctionne très bien.
y a plus qu'a modifier tous les liens de la base Smiley decu

ça signifie "pas de retour sur le 'window.open'", c'est ça ?

mrbbp

ah... merdre.... j'ai 20 ans de plus que toi Smiley confused
Modifié par mrbbp (02 May 2006 - 22:47)
Non en fait c'est plus compliqué que ça :

Le ! est l'opérateur NON ce qui inverse un résultat true=>false et inversément.

Si window.open fonctionne et que la popup est effetivement ouverte, javascript retourne un objet représentant la nouvelle fenêtre. Etant donné que cet objet est différant de null, 0 ou une chaîne vide, il sera converti en valeur true pour être ensuite inversé en false. Conséquence, l'ouverture du lien dans la fenêtre normale est annulée.

Si au contraire la fenêtre n'a pas pu être ouverte pour une raison ou une autre (par exemple présence d'un anti-popup fonctionnel), window.open retourne false. Conséquence l'onclick retourne true ce qui n'annule pas l'ouverture dans la fenêtre courante et le lien est donc ouvert normalement sans popup.
Salut,

Profite de la modif pour ajouter :
<a href="..." onclick="return !window.open(this.href);" onkeypress="return !window.open(this.href);">...</a>


Ceux qui n'utlisent pas la souris, pourront utiliser ton lien.
t'es gentil papyjo mais j'ai 20 liens dans ma page...
je n'accède qu'au premier lien.... patozot
Smiley biggol

mrbbp
Papyjo > Certes ... et si je ne fais que traverser le lien avec tab ... il s'active quand même. Et exit tous les raccourcis clvieclavier que je suis suceptible d'utiliser pendant que le focus est sur ce lien ... il vaut mieux utiliser :

onkeyup="if(event&&(event.keyCode==10||event.keyCode==13||event.which==10||event.which==13)){ this.onclick(); }"
tu es intarissable Quentin Smiley ravi

mrbbp

ps : j'ai mis à jour le site, merci encore.
Modifié par mrbbp (03 May 2006 - 20:44)