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