簡體   English   中英

油性猴子將onclick事件添加到按鈕

[英]greasemonkey adding onclick event to button

我在動態創建的按鈕上附加了onclick事件,但該事件未觸發。

var ind = location.href.indexOf('http://www.example.com/');
function init(){
    alert('h');
}
if(ind != -1){      
    var elem = document.createElement("input"); 
    elem.id ='btnGumb';
    elem.value = 'Select Check box';
    elem.type = 'button';
    elem.style.position = 'fixed';
    elem.style.left = '0px';
    elem.style.top = '0px';

    //this is not working
    elem.setAttribute('onclick', 'init();');

    //but alert is working:   elem.setAttribute('onclick', 'alert("h");');

    document.body.appendChild(elem); 

}

使用addEventListener

elem.addEventListener('click', init, false);

您的init函數未在內容頁面窗口中定義,因此您不能將函數名稱設置為字符串。

我沒有使用GreaseMonkey,但是我猜測您的腳本在其自己的作用域內,並且在腳本完成運行后會釋放其所有變量。 由於您是在此范圍內定義init的,然后在主頁上對其進行調用,因此在調用該函數時未定義。

您可以將整個函數放在onclick事件中或觸發回調:

if (elem.addEventListener) {
  elem.addEventListener('click',init,false);
} else {
  elem.attachEvent('onclick',init);
}

(attachEvent是特定於IE的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM