无法重现TypeError:'undefined'不是对象

Joh*_*ear 12 javascript iphone safari jquery

Google Analytics(分析)显示,约有12%的用户受到以下Javascript错误的影响:

TypeError: 'undefined' is not an object

90%的浏览器是Safari 7534.48.3,10%是Mozilla兼容代理.75%的错误来自iPhone,23%来自iPad.1%来自Macintosh,另外2%来自iPod等.所有设备都没有运行Linux或Windows.

我已尝试在iPhone和iPad上的safari中启用调试模式,但无法重现该错误.

以下是Google Analytics声称显示错误的网页链接.如果有人能够在这里始终如一地重现错误,我将非常高兴,因为只需一个行号就足以让我开始调试.

任何人都可以想到我可以尝试调试此方法吗?谢谢大家

对于我们中间的好奇我正在使用此代码向GA发送错误 - 警告:可能的自我推销.

更新: TypeError:'undefined'不是对象(评估'safari.self.tab.canLoad')

当点击"改变国家......"时,主要在iphone上进行管理以便一次点击它.

更新:通过确保元素在dom中可用来解决此问题.事实证明,成功时的ajax调用试图写入一个不可用的元素.

我保留了无法重现TypeError的可靠记录:'undefined'不是这里的对象

Jon*_*ant -4

在你的functions.js中,你有这个:

storage_get = function(key) {
  var store = (window.SAFARI ? safari.extension.settings : localStorage);
  var json = store.getItem(key);
  if (json == null)
    return undefined;
  try {
    return JSON.parse(json);
  } catch (e) {
    log("Couldn't parse json for " + key);
    return undefined;
  }
}
Run Code Online (Sandbox Code Playgroud)

undefined不是 JavaScript 关键字。这是一个(大多数时候)碰巧未定义的变量。你不能undefined这样使用。考虑一下如果将其替换为 会发生什么pinkelephant,因为这正是这里发生的事情。

  • 使用“pinkelephant”会抛出一个ReferenceError,使用“undefined”则不会,只会返回“undefined”值。另外,我很确定您正在查看 Chrome AdBlock 扩展程序的代码:http://code.google.com/p/adblockforchrome/source/browse/trunk/functions.js?r=3645#85 :) (9认同)