所以我正在为这个网站编写一个Greasemonkey脚本..无论如何,我的问题是我无法将onclick事件附加到我新创建的锚中。
我不知道出了什么问题,也许是因为我在Greasemonkey这就是为什么它没有按预期工作?
function createButton() {
var a = document.createElement('a');
var css = document.createElement('style');
css.type = 'text/css';
css.innerHTML = '#prt { position:absolute; right:3em; top: 6em; font-family: Arial,Helvetica,sans-serif; font-weight:bold; font-size:125%; background: #777777 none repeat scroll 0 0; color: white; padding: 6px 12px;}'
a.href = '#';
a.innerHTML = 'Print Topic';
a.id = 'prt';
a.onclick = getTopic; // DOESN'T WORK
document.body.insertBefore(a, document.body.lastChild);
document.body.appendChild(css);
}
我尝试了其他技术,例如setAttribute
a.setAttribute('onclick', function() { alert("hey"); });
setAttribute也无效..
怎么回事?
嘿伙计们,
我做到了。有人帮我翻过IRC #greasemonkey ..谢谢你的光临!
因此使用setAttribute或元素的.onclick属性的问题是greasemonkey不支持它们,而是在JavaScript控制台中返回“Component not available”错误。
如果您在使用
之前遇到此问题element.addEventListener ('click', myClickHandler, false);
这是Wiki:http://wiki.greasespot.net/XPCNativeWrapper#Event_Handlers
答案 0 :(得分:2)
使用锚点的attachEvent方法 -
a.attachEvent(getTopic)
编辑 - attachEvent仅限IE。对于Firefox,您必须使用addEventListener -
a.addEventListener(getTopic)
答案 1 :(得分:1)
尝试将其包装在匿名函数中
a.onclick = function(){
getTopic();
}