2013-03-27 71 views
3

如何從鏈接調用篡改鍵功能?從鏈接調用篡改鍵功能

這是我的嘗試。使用tampermonkey,我可以插入一個鏈接如下:

var aNode = document.createElement('a'); 
var aText = document.createTextNode('will it run'); 
aNode.appendChild(aText); 
aNode.href = 'javascript:runTest();'; 
document.body.insertBefore(aNode, document.body.firstChild); 

function runTest() { 
    alert('it ran!'); 
}; 

當鏈路被調用時,函數的runTest(),應該叫。事實並非如此。而是發生以下錯誤消息:

Uncaught ReferenceError: runTest is not defined

回答

5

請勿以這種方式設置JavaScript處理程序。使用addEventListener(),如下所示:

var aNode = document.createElement ('a'); 
var aText = document.createTextNode ('will it run'); 
aNode.href = '#'; 
aNode.appendChild (aText); 
document.body.insertBefore (aNode, document.body.firstChild); 

aNode.addEventListener ("click", runTest, false); 

function runTest (zEvent) { 
    zEvent.preventDefault(); 
    zEvent.stopPropagation(); 

    alert('it ran!'); 
}; 
+0

謝謝!這正是我所期待的,除了清潔和整潔的代碼。 – user1621123 2013-03-28 00:17:34

+0

不客氣,樂意效勞。 – 2013-03-28 00:34:33