В какой ситуации document.open () вернет ноль? - PullRequest
8 голосов
/ 06 сентября 2011

Я пытаюсь понять периодически возникающую ошибку сценария, которую я вижу в JavaScript-приложении с интенсивным использованием JavaScript, работающем под управлением Internet Explorer 6 и Windows XP.Основная причина проблемы заключается в том, что следующий вызов функции возвращает значение null (однако оно успешно выполняется без ошибки):

var doc = targetWindow.document.open("text/html","_replace");

Где targetWindow - это окно object.

Ни targetWindow, ни targetWindow.document не является null, и поэтому я изо всех сил пытаюсь понять, почему этот вызов вернет null.Моя интерпретация документации заключается в том, что этот метод никогда не должен возвращать ноль.

Этот код оставался неизменным и прекрасно работал в течение многих лет - пока я не понимаю, почему это происходит, я не уверен ни в том, как я мог бы справиться с этим, ни в том, что могло бы измениться, чтобы это начало происходить.

Что может заставить этот вызов функции возвращать ноль?

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

В соответствии с документацией вы должны передавать «заменить», а не «_replace».Попробуйте вместо этого:

var doc = targetWindow.document.open("text/html", "replace");

Поскольку вы говорите, что ваш код работал годами, вероятно, что-то изменилось, и приведенное выше предложение не может быть проблемой.Тем не менее, это все еще стоит попробовать.

Изменили ли вы какие-либо js-файлы / библиотеки, которые вы используете в своем приложении в последнее время?Кроме того, вы используете какие-либо плагины браузера на странице?Возможно, что более новая версия любого из них может как-то повлиять на ваш вызов «document.open».

0 голосов
/ 25 сентября 2011

document.open () не имеет параметров по стандарту W3C.Проверьте эту ссылку: http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-72161170

Я рекомендую вам использовать документацию W3C вместо документации Microsoft, потому что с W3C вы уверены, что она работает во всех современных браузерах, в то время как Microsoft хорошо известна добавлением расширений, которые, конечноРаботает только в собственных продуктах.Это называется EEE (охватывать, расширять и тушить).

Просто используйте document.open () без аргументов.Есть способы манипулирования историей пользователя, но это называется плохой практикой программирования.История - это личные данные пользователя, и веб-приложение не должно пытаться манипулировать ею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...