【问题标题】:jQuery looping bug in iOSiOS中的jQuery循环错误
【发布时间】:2016-05-26 15:29:09
【问题描述】:

为什么这两行代码之间的差异会导致 jquery 在 iOS(Safari 和 Chrome)中无限循环的错误?该循环未在任何其他浏览器中发生。

if ($('[name="loadingTime"]') != undefined) {...

if ($('.loadingTime') != undefined) {...

当我们以类而不是名称属性为目标时,循环错误消失了。有什么想法或解释吗?

【问题讨论】:

  • 你的循环是什么?
  • 注意,$('.loadingTime')$('[name="loadingTime"]') 永远不会是undefined,jQuery 总是返回一个对象。
  • 判断 jQuery 选择器是否匹配任何内容的方法是检查其长度:if ($('[name="loadingTime"]').length != 0)

标签: javascript jquery ios mobile-safari mobile-chrome


【解决方案1】:

经过进一步调查,在代码的另一部分中发现了该错误。事情是这样的:

  loadInterval: function() {
  var settimer = $('[name="loadingTime]').val();
  var interval = setInterval(function() {
    if (settimer == 0) {
      window.clearInterval(interval);
      $('[id^="interstitial-container"]').remove();
    };
    settimer--;
    if (settimer >= 0) {
      $('.ncount').text(settimer);
    }
  }, 1000);
}

var settimer = $('[name="loadingTime]').val();

我们错过了 loadingTime 之后的结束语! js 以未定义的形式返回,iOS 没有很好地处理它,所以 var settimer 没有设置为零,所以每当调用该函数 loadInterval 时,它都是未定义的,我们检查了我们是否需要基于未定义加载。在我们的例子中,它不是并且继续一遍又一遍地加载,总是得到一个未定义的响应,但没有错误。我觉得……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2015-08-17
    • 2012-07-29
    相关资源
    最近更新 更多