Ajout de keylistener et utilisation de javascript pour cliquer sur un lien dans Greasemonkey

Je veux créer un script de singe graisseux, qui ajoutera une touche de raccourci pour une action de déconnexion dans un site de messagerie.

Actuellement, le lien de déconnexion "? Logout & hl = fr" qui a un id = ": r5" . Je suis en mesure d'obtenir le nœud pour le lien mais pas en mesure d'appuyer sur le lien.

J'ai essayé le script comme suit

function key_event(event){ GM_log("Hello"); GM_log(event.keyCode); //if(event.keyCode != 112) return; e=document.getElementById(':r5'); if(!e) {return;} var evObj = document.createEvent('MouseEvents'); evObj.initMouseEvent(('click'),true,true,window,0,0,0,0,0,false,false,false,false,0,null); GM_log(e); e.dispatchEvent(evObj); } document.addEventListener("keypress", key_event, true); 

Mais ça ne fonctionne pas . Qu'en pensez-vous est mal ici?

Merci J

Il s'agit d'un bug ou d'une "fonctionnalité" de sécurité des navigateurs Mozilla (les développeurs n'ont pas décidé). Voir: "la simulation d'un clic sur une ancre à l'aide de dispatchEvent et initMouseEvent ne déclenche pas un vrai clic" .

Donc, vous ne pouvez pas déclencher un lien de cette façon (pour l'instant).

S'il s'agit d'une utilisation de lien ordinaire:

 var sTargetURL = document.getElementById(':r5').href; window.location.href = sTargetURL; 

.
S'il s'agit d'un appel JavaScript, EG <a id=":r5" href="SomeFunc()">foo</a> utilisez:

 unsafeWindow.SomeFunc(); 

Je ne pense pas que vous pourrez cliquer sur un lien à partir du script. Vous devriez essayer de rediriger à l'emplacement du lien à la place:

 ..... e=document.getElementById(':r5'); document.location.href = e.href; .....