Документ используется как другие вкладки - PullRequest
1 голос
/ 29 сентября 2011

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

Например:Вкладка 1, document.title: «Тестовая страница» Вкладка 2, document.title: «Вторая вкладка»

Я запускаю скрипт на вкладке 1: setTimeout (function () {alert (document.title)}, 5000).Должно появиться предупреждение «Тестовая страница», но предупреждение показывает «Вторая вкладка».

Вот мой сценарий:

gBrowser.addEventListener("DOMContentLoaded",function(e){ 
    window = e.originalTarget.defaultView;
    document = window.document;
    setTimeout(function(){ alert(document.title); }, 5000);
}, true);

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

То же самое происходит, когда я пытаюсь изменить любой элемент dom.

Также происходит, когда пользователь нажимает кнопку.

Как этого избежать?Это может быть ошибка в Firefox или у меня?

1 Ответ

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

Не забудьте объявить локальные переменные :

gBrowser.addEventListener("DOMContentLoaded",function(e){ 
    var window = e.originalTarget.defaultView;
    var document = window.document;
    setTimeout(function(){ alert(document.title); }, 5000);
}, true);

Необъявленные переменные автоматически становятся глобальными и, в частности, могут меняться с настоящего момента до истечения времени ожидания (не говоря уже о множестве других неприятных побочных эффектов).

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

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