j'ai besoin d'empécher qu'un clique avec SHIFT enfoncé n'ouvre un nouveau
navigateur sous firefox.
sous IE pas de probleme. je retourne false et le shift n'est plus géré, mais
sous firefox, ca m'ouvre a tous les coup un nouveau navigateur.
et alors ? en quoi cela résoud le non popup lors d'un shift+click sur le lien ?
j'ai essyé çà sans succès : <a href="test.htm" onclick="if(event.shiftKey){ self.location=this.href; return false; }">sobole non ok</a>
qui ouvre bien test.htm dans même fenêtre mais n'empèche pas le popup simultané et comme on ne peut faire event.shiftKey = false; je ne vois pas la soluce.
le "return false;" permet d'annuler ce listener d'événement (onclick). On obtient la même chose en passant par event.preventDefault() (version DOM) ou event.returnValue = false; (version IE)
Mais puisque shift est appuyé il faut aussi empecher l'événement de se propager puisque ce n'est alors plus l'événement par défaut qu'on veut annuler.
pour DOM on empêche la propagation avec event.stopPropagation(); http://developer.mozilla.org/en/docs/DOM:event.stopPropagation
pour IE c'est event.cancelBubble = true; http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/cancelbubble.asp
<a href="refere.html" onclick="if(event.shiftKey){ self.location=this.href; try{ event.stopPropagation(); } catch(e) { event.cancelBubble = true; } return false; }">et la, est-ce que c'est ok ?</a>
-- laurent
et alors ?
en quoi cela résoud le non popup lors d'un shift+click sur le lien ?
j'ai essyé çà sans succès :
<a href="test.htm"
onclick="if(event.shiftKey){
self.location=this.href;
return false;
}">sobole non ok</a>
qui ouvre bien test.htm dans même fenêtre
mais n'empèche pas le popup simultané
et comme on ne peut faire event.shiftKey = false;
je ne vois pas la soluce.
le "return false;" permet d'annuler ce listener d'événement (onclick).
On obtient la même chose en passant par event.preventDefault() (version
DOM) ou event.returnValue = false; (version IE)
Mais puisque shift est appuyé il faut aussi empecher l'événement de se
propager puisque ce n'est alors plus l'événement par défaut qu'on veut
annuler.
pour DOM on empêche la propagation avec event.stopPropagation();
http://developer.mozilla.org/en/docs/DOM:event.stopPropagation
pour IE c'est event.cancelBubble = true;
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/cancelbubble.asp
<a href="refere.html"
onclick="if(event.shiftKey){
self.location=this.href;
try{
event.stopPropagation();
} catch(e) {
event.cancelBubble = true;
}
return false;
}">et la, est-ce que c'est ok ?</a>
et alors ? en quoi cela résoud le non popup lors d'un shift+click sur le lien ?
j'ai essyé çà sans succès : <a href="test.htm" onclick="if(event.shiftKey){ self.location=this.href; return false; }">sobole non ok</a>
qui ouvre bien test.htm dans même fenêtre mais n'empèche pas le popup simultané et comme on ne peut faire event.shiftKey = false; je ne vois pas la soluce.
le "return false;" permet d'annuler ce listener d'événement (onclick). On obtient la même chose en passant par event.preventDefault() (version DOM) ou event.returnValue = false; (version IE)
Mais puisque shift est appuyé il faut aussi empecher l'événement de se propager puisque ce n'est alors plus l'événement par défaut qu'on veut annuler.
pour DOM on empêche la propagation avec event.stopPropagation(); http://developer.mozilla.org/en/docs/DOM:event.stopPropagation
pour IE c'est event.cancelBubble = true; http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/cancelbubble.asp
<a href="refere.html" onclick="if(event.shiftKey){ self.location=this.href; try{ event.stopPropagation(); } catch(e) { event.cancelBubble = true; } return false; }">et la, est-ce que c'est ok ?</a>
-- laurent
ASM
<a href="refere.html" onclick="if(event.shiftKey){ self.location=this.href; try{ event.stopPropagation(); } catch(e) { event.cancelBubble = true; } return false; }">et la, est-ce que c'est ok ?</a>
oui, oui, c'est ok
reste plus qu'à bosser ces histoires de propagations :-/
pour DOM on empêche la propagation avec event.stopPropagation(); http://developer.mozilla.org/en/docs/DOM:event.stopPropagation
pour IE c'est event.cancelBubble = true; http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/cancelbubble.asp
je n'ai pas essayé avec NC4.5 :-) (à ts les coups il doit bloquer sur 'try' (de mémoire) )
-- Stephane Moriaux et son [moins] vieux Mac
<a href="refere.html"
onclick="if(event.shiftKey){
self.location=this.href;
try{
event.stopPropagation();
} catch(e) {
event.cancelBubble = true;
}
return false;
}">et la, est-ce que c'est ok ?</a>
oui, oui, c'est ok
reste plus qu'à bosser ces histoires de propagations :-/
pour DOM on empêche la propagation avec event.stopPropagation();
http://developer.mozilla.org/en/docs/DOM:event.stopPropagation
pour IE c'est event.cancelBubble = true;
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/cancelbubble.asp
je n'ai pas essayé avec NC4.5 :-)
(à ts les coups il doit bloquer sur 'try' (de mémoire) )