Greasemonkey addEventListener没有触发?

时间:2011-11-27 12:03:41

标签: javascript greasemonkey

我已经查看了关于此的各种其他问题,并且它们都通过使用addEventListener而不是onclick来修复。我现在的问题是,事件根本不会发生。

基本上我的页面上有一系列元素是“按钮”,然后用这段代码循环显示:

for (var i = 0; i < buttons.length; i++) {
    buttons[i].className = "button";
    buttons[i].style.width = "50px";
    buttons[i].href = "#";
    $(buttons[i]).bind('click',function (e) { alert("Hi"); }); //I have even tried jQuery. This isnt here when the line below is here.
    buttons[i].addEventListener('click',function (e) { alert("Hi"); },false);
}

哎呀我甚至尝试将它加载到一个它永远不会工作的标签中,我不确定为什么。我在同一页面上有另一个用户脚本,它能够使用相同的方法完美地绑定到事物上。

控制台中没有错误,没有任何反应。但是当我通过在它的末尾添加()来使函数自调用时,它会在页面加载时运行代码,从而显示警报。

1 个答案:

答案 0 :(得分:1)

嗯,这更像是关于如何调试我认为的greasemonkey代码。我看不出代码有什么问题。

我通常有一个函数可以把东西扔给萤火虫:

function GM_log(element) {
    unsafeWindow.console && unsafeWindow.console.log(element);
}

在这种情况下,我很好奇是否选择了任何按钮,因此我会记录按钮数组,并在点击功能中记录一些内容(而不是警报)。

另一种可能性是在chrome中设置userscript,允许你在那里调试代码(firebug不知道greasemonkey脚本代码)。但是找到/改变脚本在那里更难,所以它只适用于你真正迷失的时候。