Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

empecher le shift sous firefox

0 views
Skip to first unread message

Etienne SOBOLE

unread,
Jan 18, 2006, 2:41:19 PM1/18/06
to
salut.

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.

j'ai vraiment besoin d'un coup de main la !!!

Merci
Etienne


ASM

unread,
Jan 18, 2006, 5:32:09 PM1/18/06
to
Etienne SOBOLE a écrit :

> salut.
>
> j'ai besoin d'empécher qu'un clique avec SHIFT enfoncé n'ouvre un nouveau
> navigateur sous firefox.

et où faut-il faire cette astuce ?
paske là, moi avec mon FF, je n'arrive pas à reproduire le phénomène.

> 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.

tu retournes false à partir de quoi ?

> j'ai vraiment besoin d'un coup de main la !!!

Et si tu précisais un peu ton cas de figure ?

--
Stephane Moriaux et son [moins] vieux Mac

Etienne SOBOLE

unread,
Jan 19, 2006, 1:41:06 AM1/19/06
to
Ouai j'avoue que j'ai pas été tres clair.

en gros je cherche a refaire la selection multiple de windows sur un page
web pour manipuler des fichiers dans une interface web:
Shift pour selectionner une plage
Control pour ajoutter ou retirer un fichier.

donc je clique sur un fichier, il est selectionné
en appuyant sur shift je clique sur un autre fichier de la liste, et ca
selectionne tous les fichiers... enfin a la windows quoi.

Mais apres, en restant sur shift préssé, je fais mon drag and drop.
et lorsque je drop, evidement j'appelle une page pour prendre en compte le
mouvement de mes fichiers.
et hop cette url est ouverte dans une nouvelle fenetre alors qu'evidement ce
n'est pas du tout le but de la manoeuvre.

en gros. j'aimerai que

<a href='#' onclick='return gourl();'>clic ici</a>

function gourl()
{
window.location.href = 'mapage.php';
return false;
}

n'ouvre pas de nouvelle fenetre si je clique sur "clic ici" avec la touche
shift préssé.
dans la foule, faudrait que ca n'ouvre pas non plus de tab si c'est control
qui est préssé.

Etienne


ASM

unread,
Jan 19, 2006, 7:11:06 AM1/19/06
to
Etienne SOBOLE a écrit :

> Ouai j'avoue que j'ai pas été tres clair.

[...]

> en gros. j'aimerai que
>
> <a href='#' onclick='return gourl();'>clic ici</a>
>
> function gourl()
> {
> window.location.href = 'mapage.php';
> return false;
> }
>
> n'ouvre pas de nouvelle fenetre si je clique sur "clic ici" avec la touche
> shift préssé.

scrognegneu !
mais j'en étais resté avec l'habitude du clic-droit et son menu
jamais je n'ai utilisé cette facilité :-(

Grâve problème :
================

à ce qu'il semble
seul IE (windows only I expect) est capable de
detecter les event sur les touches shif alt control :
http://fr.selfhtml.org/javascript/objets/event.htm#alt_ctrl_shift_key

et j'imagine que çà va pas être fastoche de détourner ces touches avec FF
à moins que ?
http://xulfr.org/xulplanet/xultu/xblevents.html

Etienne SOBOLE

unread,
Jan 19, 2006, 1:11:16 PM1/19/06
to
> scrognegneu !
> mais j'en étais resté avec l'habitude du clic-droit et son menu
> jamais je n'ai utilisé cette facilité :-(

hehe.
bon ben de mon coté, j'ai résolu mon probleme en remplacant les balises A
par des balises B.
du coup, plus d'ouverture de nouvelle fenetre.
c'est pas l'ideal, mais bon.


Laurent Vilday

unread,
Jan 20, 2006, 3:39:54 AM1/20/06
to
ASM a écrit :

> à ce qu'il semble
> seul IE (windows only I expect) est capable de
> detecter les event sur les touches shif alt control :

Non ce n'est pas vrai, même mon vieux mozilla 1.7.3 y arrive très bien.
http://developer.mozilla.org/en/docs/DOM:event
http://developer.mozilla.org/en/docs/DOM:event.shiftKey

Et pour en etre convaincu :
http://mokhet.com/tests/event_and_shift_alt_ctrl.html

--
laurent

ASM

unread,
Jan 20, 2006, 4:19:55 AM1/20/06
to
Laurent Vilday a écrit :
> ASM a écrit :

on notera que j'avais pris des pincettes

>> à ce qu'il semble

>> seul IE (windows only I expect) est capable de
>> detecter les event sur les touches shif alt control :
>
>
> Non ce n'est pas vrai, même mon vieux mozilla 1.7.3 y arrive très bien.

Bonne nouvelle ! j'en suis ravi.

Ha ! oui ! ... çà se mérite tt de même ... hein ?
(30 lignes pour remplacer 3 évenements prévus)

J'ai archivé la démo pour essayer d'y comprendre progressivement :-)
Merci

Laurent Vilday

unread,
Jan 20, 2006, 4:52:34 AM1/20/06
to
ASM a écrit :

> Ha ! oui ! ... çà se mérite tt de même ... hein ?
> (30 lignes pour remplacer 3 évenements prévus)

Pour être compatible avec IE oui ça se mérite :p
Et encore, cette version de gestion des évènements est une version super
light de ce que j'utilise qui est 10 fois plus gros, la compatibilité ca
prend de la place ehehe.

--
laurent

Etienne SOBOLE

unread,
Jan 21, 2006, 5:28:55 AM1/21/06
to

genial cet exemple.
dommage que ce ne soit pas

shif+clic sur ce lien ouvre le lien dans la fénčtre active !!! :)
Etienne


Etienne SOBOLE

unread,
Jan 21, 2006, 5:35:40 AM1/21/06
to
> Ha ! oui ! ... çà se mérite tt de même ... hein ?
> (30 lignes pour remplacer 3 évenements prévus)

hum...
c'est long en effet.

moi personnellement j'utilise un truc beaucoup plus simple pour detecter le
shift (meme sous FireFox)!

<div class='carrerouge' onclick='return test_shift(this, event);'>

function test_shift(o, e)
{
var shift = (isFF) ? e.shiftKey : (event.shiftKey);
...
}

voila. evidement isFF est true s'il s'agit de firefox.
Je me demande meme si event.shiftKey ne renvoit pas dans tout les cas de
figure l'etat de la touche shift...

Etienne


ASM

unread,
Jan 21, 2006, 9:14:33 AM1/21/06
to
Etienne SOBOLE a écrit :

>
> moi personnellement j'utilise un truc beaucoup plus simple pour detecter le
> shift (meme sous FireFox)!
>
> <div class='carrerouge' onclick='return test_shift(this, event);'>
>
> function test_shift(o, e)
> {
> var shift = (isFF) ? e.shiftKey : (event.shiftKey);
> ...
> }
>
> voila. evidement isFF est true s'il s'agit de firefox.
> Je me demande meme si event.shiftKey ne renvoit pas dans tout les cas de
> figure l'etat de la touche shift...

si(*) :
<a href="#" onclick="alert(event.shiftKey);">shift ou non ?</a>
avec mon FF, IE, Opera, Safari
iCab gèle le shift à son profit :
ne sert qu'aux sélections et il se moque alors des histoires de liens
Seul mon FF ouvre un popup avec shift+clic sur lien

mais ...
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.

(*) contrairement à ce que laisse entendre selfhtml.org
qui prétend que c'est IE only
(à ce que j'ai compris)

Laurent Vilday

unread,
Jan 21, 2006, 5:14:20 PM1/21/06
to
ASM a écrit :

> 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

unread,
Jan 22, 2006, 6:15:18 AM1/22/06
to
Laurent Vilday a écrit :

>
> <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


je n'ai pas essayé avec NC4.5 :-)
(à ts les coups il doit bloquer sur 'try' (de mémoire) )

0 new messages