In welcher Situation würde document.open () null zurückgeben?

8

Ich versuche, einen zeitweiligen Skriptfehler zu verstehen, der in einer JavaScript-intensiven Thin-Client-Anwendung unter Internet Explorer 6 und Windows XP auftritt. Die Ursache des Problems liegt darin, dass der folgende Funktionsaufruf den Wert null zurückgibt (jedoch ohne Fehler):

%Vor%

Dabei ist targetWindow ein Fenster -Objekt.

Weder targetWindow noch targetWindow.document ist null und deshalb habe ich Schwierigkeiten zu verstehen, warum dieser Aufruf null zurückgeben würde. Meine Interpretation der Dokumentation lautet, dass diese Methode nicht funktionieren sollte jemals null zurückgeben.

Dieser Code ist unverändert geblieben und funktioniert seit vielen Jahren einwandfrei - bis ich verstehe, warum das passiert, bin ich mir nicht sicher, wie ich damit umgehen soll oder was sich geändert haben könnte, damit dies geschieht.

Was könnte dazu führen, dass dieser Funktionsaufruf null zurückgibt?

    
Justin 06.09.2011, 16:17
quelle

2 Antworten

1

Laut der Dokumentation sollten Sie "ersetzen", nicht "ersetzen" übergeben. Versuchen Sie es stattdessen:

%Vor%

Da Sie sagen, dass Ihr Code seit Jahren funktioniert, ist es wahrscheinlich, dass sich etwas geändert hat und der obige Vorschlag möglicherweise nicht das Problem ist. Es ist jedoch immer noch einen Versuch wert.

Haben Sie in letzter Zeit in Ihrer Anwendung verwendete js-Dateien / Bibliotheken geändert? Verwenden Sie auch Browser-Plugins auf der Seite? Es ist möglich, dass eine neuere Version dieser beiden Ihren Aufruf von "document.open" irgendwie beeinflussen könnte.

    
Chris Pietschmann 08.09.2011 02:48
quelle
0

document.open () hat keine Parameter nach W3C-Standard. Schauen Sie sich diesen Link an: Ссылка

Ich empfehle Ihnen, die W3C-Dokumentation anstelle von Microsoft zu verwenden, da Sie mit W3C sicher sind, dass es in allen modernen Browsern funktioniert, während Microsoft dafür bekannt ist, Erweiterungen hinzuzufügen, die natürlich nur in ihren eigenen Produkten funktionieren. Es heißt EEE (Embrace, erweitern und löschen).

Verwenden Sie einfach document.open () ohne Argumente. Es gibt Möglichkeiten, den Benutzerverlauf zu manipulieren, aber das wird als schlechte Programmierpraxis bezeichnet. History ist private Daten des Benutzers und Web-Anwendung sollte nicht versuchen, es zu manipulieren.

    
robert petranovic 25.09.2011 01:06
quelle