我已经查看了关于此的各种其他问题,并且它们都通过使用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);
}
哎呀我甚至尝试将它加载到一个它永远不会工作的标签中,我不确定为什么。我在同一页面上有另一个用户脚本,它能够使用相同的方法完美地绑定到事物上。
控制台中没有错误,没有任何反应。但是当我通过在它的末尾添加()来使函数自调用时,它会在页面加载时运行代码,从而显示警报。
答案 0 :(得分:1)
嗯,这更像是关于如何调试我认为的greasemonkey代码。我看不出代码有什么问题。
我通常有一个函数可以把东西扔给萤火虫:
function GM_log(element) {
unsafeWindow.console && unsafeWindow.console.log(element);
}
在这种情况下,我很好奇是否选择了任何按钮,因此我会记录按钮数组,并在点击功能中记录一些内容(而不是警报)。
另一种可能性是在chrome中设置userscript,允许你在那里调试代码(firebug不知道greasemonkey脚本代码)。但是找到/改变脚本在那里更难,所以它只适用于你真正迷失的时候。