2010-07-20 80 views
2

我想創建一個油膩的猴子腳本,它將在一個郵件站點中添加一個用於註銷操作的快捷鍵。添加keylistener並使用javascript來點擊Greasemonkey中的鏈接

目前註銷鏈接「?註銷& 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); 


但是,這是行不通的。你認爲這裏有什麼錯誤?

感謝 Ĵ

回答

1

這可以是一個錯誤或M​​ozilla瀏覽器安全「功能」(開發商還沒有決定)。參見:"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(); 
2

我不認爲你將能夠點擊從腳本的鏈接。你應該嘗試重定向到鏈接位置,而不是:

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