我在动态创建的按钮上附加了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);
}
答案 0 :(得分:3)
elem.addEventListener('click', init, false);
您的init
函数未在内容页面窗口中定义,因此您无法将函数名称设置为字符串。
答案 1 :(得分:2)
我没有使用GreaseMonkey,但我猜你的脚本在它自己的范围内,并且在脚本完成运行后释放所有变量。由于您在此范围内定义init,但在主页面上调用它,因此在调用该函数时该函数是未定义的。
您可以将整个函数放在onclick事件中或触发回调:
if (elem.addEventListener) {
elem.addEventListener('click',init,false);
} else {
elem.attachEvent('onclick',init);
}
(attachEvent是特定于IE的)