2012-04-09 8 views
8

Google Analytics zeigt, dass ~ 12% unserer gesamten Benutzer von einem Javascript Bug betroffen sind:kann nicht Typeerror reproduzieren: 'undefined' ist kein Objekt

TypeError: 'undefined' is not an object

90% der Browser sind Safari 7534.48.3, 10% sind Mozilla-kompatible Agenten. 75% der Fehler kommen von iPhones, 23% von iPads. 1% von Macintosh, die anderen 2% von iPod usw. Keines der Geräte läuft unter Linux oder Windows.

Ich habe versucht, Debug-Modus in Safari auf einem iPhone und iPad, aber nicht in der Lage, den Fehler zu reproduzieren.

Here is a link to a page Google Analytics claims is showing the error. Wenn irgendjemand den Fehler hier konsistent reproduzieren kann, werde ich sehr glücklich sein, da nur eine Zeilennummer ausreichen würde, um mit dem Debuggen zu beginnen.

Kann mir jemand andere Möglichkeiten vorstellen, wie ich versuchen kann, dies zu debuggen? Danke allen

Für die Neugierigen unter uns verwende ich this code to send errors to GA - Warnung: Mögliche Eigenwerbung.

Update: Typeerror: ‚undefined‘ ist kein Objekt

Managed zu bekommen, dass aus ihm einmal beim Klicken um, vor allem auf einem iPhone (‚safari.self.tab.canLoad‘ Auswertung), während Klicken Sie auf "Land ändern".

Update: Gelöst dies, indem Sie sicherstellen, dass das Element in der Dom verfügbar war. Es stellte sich heraus, dass der Ajax-Aufruf beim Erfolg versuchte, in ein Element zu schreiben, das nicht verfügbar war.

ich eine solide Rekord von Unable to reproduce TypeError: 'undefined' is not an object here

+0

Also, was ist die Datei und Zeile der Fehler erscheint? Dein Code sendet das auch an GA. – Bergi

+0

undefined: 0 .. :(- Schokolade Teekanne kommt in den Sinn ... –

+0

@JohnMcLear: wenn Sie die Antwort gefunden haben, denke ich, es ist besser, Sie es als Antwort veröffentlichen und genehmigen (es ist erlaubt), anstatt einfach zu aktualisieren Ihre Frage, wie es aussieht, ist es immer noch aktiv (nicht beantwortet), wenn es nicht ist. – Max

Antwort

0

In Ihrem functions.js gehalten haben, müssen Sie dies:

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 ist kein JavaScript Stichwort. Es ist eine Variable, die (meistens) nicht definiert ist. Sie können undefined nicht so verwenden. Überlegen Sie, was passiert, wenn Sie es durch pinkelephant ersetzen würden, denn genau das passiert hier.

+0

Das ist das Seltsame, ich sehe functions.js nicht ... Welche Quelle ist functions.js für Sie? IE kommt es von cloudflare , Google oder Sharethis? –

+5

Die Verwendung von 'pinkelsephant' würde einen ReferenceError auslösen, wobei' undefined' nicht verwendet wird und einfach den 'undefinierten' Wert zurückgibt. Außerdem bin ich mir ziemlich sicher, dass Sie sich den Code der Chrome AdBlock-Erweiterung ansehen: http://code.google.com/p/adblockforchrome/source/browse/trunk/functions.js?r=3645#85 :) – DCoder

+0

Haha guter Punkt :) Nun, es war das einzige 'undefined', das ich finden konnte ... Vielleicht ist das die Antwort auf sein Problem - Browser-Erweiterungen mit Bugs? –

-3

Zunächst bin ich überrascht, Sie sind besorgt über Ihre JavaScript-Push-Fehler zu GA ... Sie scheinen eine ganze Reihe von 404 Fehlercodes auf eine Reihe von Links.

Sekunde aus, fand ich eine andere JavaScript-Fehler, dass ich verdient diese Antwort fühlen:

Der Versuch, für E-Mail-Updates zu abonnieren gibt eine undefinierte Variable auf Antwort (scheinbar auf Daten in den Funktionsparameter eingestellt):

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