【问题标题】:JQuery/Javascript invalid argument script error on window resize in IE8在 IE8 中调整窗口大小时出现 JQuery/Javascript 无效参数脚本错误
【发布时间】:2013-08-01 21:52:55
【问题描述】:

在使用以下 sn-p 对窗口调整大小事件做出反应时,我在 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 中显示“脚本错误”消息,不好看。我将不胜感激有关如何摆脱错误消息的任何提示。

谢谢

【问题讨论】:

  • 附带说明,IE 不支持第三个参数。看看这里 -developer.mozilla.org/en-US/docs/Web/API/window.setTimeout -“请注意,在第一种语法中将附加参数传递给函数在 Internet Explorer 中不起作用。如果要在该浏览器上启用此功能,则必须使用兼容性代码”

标签: javascript jquery internet-explorer resize invalid-argument


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        resizeTimer = setTimeout(dummyFunc, 100);
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多