0

尽管浏览器按预期执行函数“dummyFunc()”,但在使用以下代码段对窗口调整大小事件做出反应时,我在 IE8 中遇到脚本错误:

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 中显示“脚本错误”消息,这很不讨人喜欢。我将不胜感激有关如何摆脱错误消息的任何提示。

谢谢

4

4 回答 4

2

更改dummyFunc()dummyFunc。正如您所拥有的那样,您正在立即执行该函数,然后将undefined(函数调用的结果)传递给setTimeout.

您想改为传递对函数的引用:

resizeTimer = setTimeout(dummyFunc, 100, 'JavaScript');
于 2013-08-01T13:46:39.343 回答
0

您必须在调试脚本时运行 ie8。在查看页面时按 F12 并从那里开始调试。然后你必须分析你得到脚本错误的地方。

于 2013-08-01T13:45:37.517 回答
0

在第一个 setTimeout 之前,resizeTimer 是未定义的。尝试if(resizeTimer) { clearTimeout(resizeTimer); ...

于 2013-08-01T13:46:39.660 回答
0

您正在dummyFunc通过调用它立即执行。dummyFunc()被未定义的函数的返回值替换。

resizeTimer = setTimeout(dummyFunc(), 100, 'JavaScript');

只需省略括号 atdummyFunc即可将其作为参考传递。

resizeTimer = setTimeout(dummyFunc, 100);

我从来没有见过你传递的最后一个参数,所以我把它省略了。这很容易在 IE8 中引发错误。

于 2013-08-01T13:46:53.143 回答