как узнать, когда DOM снова готов после изменения URL с помощью window.location.href - PullRequest
3 голосов
/ 11 октября 2011

Я пишу расширение для Firefox, используя Add-on SDK, и я успешно отсканировал сайт с помощью скрипта контента и хочу сейчас углубиться. Тем не менее, когда я изменяю URL с

window.location.href = "http://www.thatsite.com/foo.php";
alert($('#abc');

Я не могу получить доступ к новой DOM. Предупреждение появляется до того, как сайт полностью прочитан. Я пытался $(document).ready(function(), но кажется, что это работает только один раз ...

Как мне дождаться полной сборки сайта?

Ответы [ 2 ]

3 голосов
/ 12 октября 2011

Ваш скрипт контента работает только до тех пор, пока страница загружена - если вы перейдете на другую страницу, этот экземпляр скрипта контента будет выгружен. Другой экземпляр скрипта контента будет загружен на новую страницу, однако вы можете сделать все необходимое там. Единственная проблема - передача данных из старого экземпляра в новый. Вы можете отправить свои данные в надстройку с помощью postMessage(), а затем надстройку отправить ее новому сценарию содержимого в обработчике onAttach(). Возможность этого в вашем случае зависит от того, чего вы пытаетесь достичь (вы не сказали этого в вопросе).

1 голос
/ 11 октября 2011

Вам нужно переместить JS на более высокий уровень, если вы хотите взаимодействовать с вкладкой с изменением местоположения. См .: Документы MDC . На самом деле, ваш JS применяется один раз в контексте текущей страницы. После загрузки новой страницы она фактически не существует.

Действительно, вы не должны взаимодействовать со страницей из аддона в любом случае. Такое поведение похоже на пользовательский скрипт Greasemonkey, а не на расширение Firefox.

...