Невозможно воспроизвести TypeError: 'undefined' не является объектом

Google Analytics показывает, что около 12% всех наших пользователей подвержены ошибкам Javascript:

TypeError: 'undefined' is not an object

90% браузеров - Safari 7534.48.3, 10% - агент, совместимый с Mozilla. 75% ошибок исходит от iPhone, 23% - от iPads. 1% от Macintosh, остальные 2% - от iPod и т.д. Ни одно из устройств не запускает Linux или Windows.

Я попытался включить режим отладки в сафари на iPhone и iPad, но не смог воспроизвести ошибку.

Вот ссылка на страницу. В заявках Google Analytics отображается ошибка. Если кто-то может последовательно воспроизвести ошибку здесь, я буду очень счастлив, потому что просто номер строки будет достаточно, чтобы начать отладку.

Может ли кто-нибудь подумать о других способах, которые я могу попытаться отладить? Спасибо всем

Для любопытных среди нас я использую этот код для отправки ошибок в GA - Предупреждение: Возможная самооценка.

Обновление: TypeError: 'undefined' не является объектом (оценка "safari.self.tab.canLoad" )

Удалось вытащить это из него один раз при нажатии вокруг, в основном на iphone, нажав "Изменить страну.."

Обновление:. Решено, убедившись, что элемент доступен в dom. Оказывается, что вызов ajax на успех пытался написать элемент, который не был доступен.

Я сохранил твердую запись Невозможно воспроизвести TypeError: 'undefined' здесь не является объектом

Ответ 1

В ваших функциях .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;
  }
}

undefined НЕ является ключевым словом JavaScript. Это переменная, которая (большую часть времени) имеет значение undefined. Вы не можете использовать undefined следующим образом. Подумайте, что произойдет, если вы замените его на pinkelephant, так как это то, что происходит здесь.

Ответ 2

Во-первых, я удивлен, что вы беспокоитесь о своих ошибках, связанных с ошибкой JavaScript в GA... У вас, похоже, довольно много 404 кодов ошибок для ряда ссылок.

Во-вторых, я нашел другую ошибку JavaScript, которая, как мне кажется, заслуживает этого ответа:

Попытка подписки на обновления электронной почты дает переменную undefined в ответе (видимо, заданную для данных в параметрах функции):

msh.header.js:213 ReferenceError: Can't find variable: response