Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   clearInterval и setInterval из разных локаций. (https://javascript.ru/forum/events/1476-clearinterval-i-setinterval-iz-raznykh-lokacijj.html)

Bakuryu 27.07.2008 20:56

clearInterval и setInterval из разных локаций.
 
Привет! Есть две функции, в одной:
intervalID = setInterval (func, 10000 );

Во второй:
clearInterval (IntervalID);

Переменная IntervalID - объявлена глобальной.
1-ая ф-ция вызывается из одного окна, вторая из другого окна.
(Экстеншен к FF 1-ое окно - основное окно браузера, 2-ое - появляется при нажатии на кнопку)
Собственно проблема заключается в том, что не удаётся выполнить clearInterval (IntervalID), поскольку в этот момент IntervalID == undefined. Как я думаю (плз. поправьте меня если это не так) это от того, что ф-ции вызываемые из появляющегося окна ничего не знают о "глобальной" переменной IntervalID. Каким образом можно передать переменную (я так понял это вообще объект или ссылка на объект, потому nsIPrefService тут дело не обойдётся) IntervalID ф-циям, вызываемым из другого окошка?

ZoNT 27.07.2008 21:28

переменная голбальна в контексте окна.
Она НЕ глобальна относительно браузера, иначе я бы мог спокойно обращаться к скриптам на странице www.1.com из своей страницы, открытой в скрытом фрейме(окне).

Bakuryu 27.07.2008 21:43

Потому я и написал ' "глобальной" ', в кавычках. Так всё же каким способом можно оборвать setInterval?

Андрей Параничев 27.07.2008 21:50

Если второе окно открывается из первого через window.open, то попробуйте искать из второго окна IntervalID в window.opener. Ведь все "глобальные" переменные на самом деле являются свойствами window. Или под "нажатие кнопки" вы имели в виду кнопку на панели firefox?

Bakuryu 27.07.2008 22:13

Да, именно нажатие кнопки на панели FF. Второе окно открывается через openDialog, но это оказалось не важно, потому что с помощью window.opener получилось достать IntervalID, так что огромнейшее спасибо! =)

Bakuryu 27.07.2008 22:32

Хмм... достать-то удалось(по
alert (window.opener.intervalID)
сужу), но
clearInterval (window.opener.intervalID);
не сбрасывает... =(

Bakuryu 27.07.2008 22:45

Извиняюсь, setInterval дома-то и надо было убивать, вот так написал - получилось:
opener.clearInterval (window.opener.intervalID);


Часовой пояс GMT +3, время: 14:53.