Ist window.document immer null oder undefiniert?

8

Ich habe auf dem window.document Objekt, um einige der Forschung getan, sicher einer meiner JavaScript-Lösungen zu machen, ist zuverlässig. Gibt es jemals einen Fall, wenn das Objekt window.document null oder undefiniert ist?

Zur Diskussion hier ist ein nicht relevanter Beispielcode. Gibt es Situationen, in denen dieser Codeabschnitt fehlschlägt (aka, werfen Sie eine Ausnahme)?

%Vor%     
N. Taylor Mullen 25.08.2012, 03:39
quelle

4 Antworten

4
  

Gibt es jemals einen Fall, wenn das Objekt window.document null oder undefiniert ist?

Ja, für JavaScript-Code, der sich nicht in einem Dokument befindet (z. B. node.js). Aber solch ein Code kann auch kein Fensterobjekt haben (obwohl es ein globales Objekt haben wird).

Für Code in HTML-Dokumenten in Benutzeragenten, die mit dem W3C-DOM kompatibel sind, nein.

%Vor%

Es wird fehlschlagen wo:

  1. Die jQuery ready-Funktion schlägt fehl (wahrscheinlich zumindest in einigen Browsern, jedoch nicht in denen, die häufig für Desktops und einige mobile Geräte verwendet werden),
  2. Es gibt keine window object oder
  3. Es gibt kein window.document -Objekt

Um sicher zu sein, dass Code in einer Vielzahl von Hosts funktioniert, können Sie Folgendes tun:

%Vor%

was nicht viel zu schreiben ist und wahrscheinlich nur einmal ausgeführt werden muss.

Alternativen:

%Vor%

und

%Vor%     
RobG 25.08.2012, 13:24
quelle
1

Ich denke, das Dokument ist immer definiert, weil der ganze Browser zeigt, dass es ein HTML-Dokument ist, sogar site is not available . Mehr, document ist schreibgeschützte Eigenschaft

%Vor%     
user907860 25.08.2012 03:45
quelle
1

Wenn Sie die Tatsache ignorieren, dass JavaScript neben Webbrowsern / Benutzeragenten auch andere Orte ausführt, kann Ihr pageLoaded-Test auf iframes fehlschlagen (ungeprüft, aber ich weiß, dass sie seltsam werden).

Es kann auch eine Frage darüber geben, was "page loaded" bedeutet. Versuchen Sie zu sehen, ob das DOM gerendert wurde und die Elemente manipulierbar sind? Oder überprüfen Sie, ob das Laden der Seite tatsächlich abgeschlossen ist, was auch das Laden aller anderen Elemente, z. B. Grafiken, einschließt.

Diese Diskussion kann nützlich sein: Wie kann überprüft werden, ob DOM ohne ein Framework bereit ist?

    
Jeremy J Starcher 25.08.2012 03:47
quelle
1

Weil Ihr JavaScript-Code in einem HTML-Dokument geschrieben sein muss, so dass Ihr Code nicht aus einem Dokument heraus ausgeführt werden könnte, also kein Dokument, kein Javascript.

    
FloatFish 25.08.2012 04:53
quelle

Tags und Links