添加keylistener并使用javascript单击Greasemonkey中的链接

时间:2010-07-20 09:02:15

标签: javascript javascript-events greasemonkey hyperlink

我想创建一个油腻的猴子脚本,它将在一个邮件站点中添加用于注销操作的快捷键。

目前退出链接“?logout& hl = en”,其中 id =“:r5”。我能够获得链接的节点,但无法调用点击它。

我尝试了如下脚本

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


但这不起作用。你觉得这里有什么问题?

由于 Ĵ

2 个答案:

答案 0 :(得分:2)

我认为您无法单击脚本中的链接。您应该尝试重定向到链接位置:

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

答案 1 :(得分:1)

这是Mozilla浏览器的错误或安全“功能”(开发人员尚未决定)。请参阅:"simulating a click on an anchor using dispatchEvent and initMouseEvent does not trigger a real click"

所以你不能以这种方式触发链接(现在)。

如果是普通链接,请使用:

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


如果是JavaScript调用,则EG <a id=":r5" href="SomeFunc()">foo</a>使用:

unsafeWindow.SomeFunc();