2012-04-11 8 views
0

Документ window.document часто изменяется, например, при переходе с одного URL на другой или при вызове document.reload (true);Javascript. Как определить, когда изменился файл window.document?

У самого документа есть готовое состояние, которое идеально подходит и событие readystatechange отслеживает любые изменения. Однако, если вы добавите addEventListener в документ для события readyState, и документ будет обновлен, addEventListener больше не будет существовать, и метод никогда не будет вызван.

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

ответ

3

Вам нужно будет либо иметь свой собственный javascript на каждой веб-странице, чтобы сценарий мог переустановить обработчик событий при загрузке каждой страницы, либо вам нужно будет сделать это из подключаемого модуля браузера, который может отслеживать каждую страницу как он загружен.

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

Еще одна идея: если все интересующие вас страницы были в том же домене и в вашем домене, возможно, у вас есть родительский кадр, который регулярно контролирует дочерний фрейм и постоянно перезагружает обработчик событий каждый раз, когда документ изменения. Но из-за ограничений безопасности для одного и того же происхождения, это может работать только в том случае, если все кадры находятся в одном домене.

0

Если вы настроите таргетинг на текущие браузеры и не заботитесь о прежней поддержке, ознакомьтесь с API истории, так как он позволяет пользователю появляться на новых страницах (URL-адрес в адресной строке изменяется и back/fwd, как представляется, работают так, как предполагается), не обновляя ваш JavaScript-контекст.

Смотрите демо здесь: http://html5demos.com/history

И прочитать об этом здесь: https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

+0

Я нацеливание главным образом 5.1 браузер IOS Safari, так что я не возражаю о наследстве действительно. Однако история не решит проблему, которую я испытываю, обнаружив, что обновление window.document возобновлено. – Mark

+0

история api позволит вам обновить документ _override_. В противном случае, я думаю, вы могли бы прослушать событие '' beforeunload '', но это не имеет особого значения, потому что ваши скрипты и все объекты JS будут уничтожены сразу после того, как это произойдет в любом случае ... – JKing

+0

Действительно, JKing теперь вы говорите , Событие 'unload' запускается, когда документ действительно стирается, но на самом деле я хочу, чтобы событие «rightafterunload» ;-) – Mark

Смежные вопросы