在使用以下代码片段对窗口调整大小事件做出反应时,我在IE8中收到脚本错误,尽管浏览器按预期执行函数'dummyFunc()':
var jq = jQuery.noConflict();
var resizeTimer;
jq(window).resize(function() {
clearTimeout(resizeTimer);
//resizeTimer = setTimeout(reloadSlider(), 100, 'JavaScript');
resizeTimer = setTimeout(dummyFunc(), 100, 'JavaScript');
});
function dummyFunc() {
alert('hurra');
}
所以,问题不在于浏览器没有提醒,问题在于Internet Explorer中显示“脚本错误”消息,这是不可爱的。我很欣赏有关如何摆脱错误消息的任何提示。
谢谢
答案 0 :(得分:2)
将dummyFunc()
更改为dummyFunc
。如您所知,您正在立即执行该函数,然后将undefined
(函数调用的结果)传递给setTimeout
。
您想要传递对函数的引用:
resizeTimer = setTimeout(dummyFunc, 100, 'JavaScript');
答案 1 :(得分:0)
在调试脚本时,您必须运行ie8。在查看页面时按F12并从那里开始调试。然后,您将必须分析出现脚本错误的位置。
答案 2 :(得分:0)
resizeTimer未定义。试试if(resizeTimer) { clearTimeout(resizeTimer); ...
答案 3 :(得分:0)
您正在通过调用它立即执行dummyFunc
。 dummyFunc()
被函数的返回值替换,这是未定义的。
resizeTimer = setTimeout(dummyFunc(), 100, 'JavaScript');
只需省略dummyFunc
处的护腕即可将其作为参考传递。
resizeTimer = setTimeout(dummyFunc, 100);
我从未见过你传过的最后一个参数,所以我把它遗漏了。这很容易在IE8中抛出错误。