![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Oct 2003
Сообщений: 97
|
Эт МЫ. Всем привет!
Опять возник вопрос. Очень простой - в принципе. Если я вызвал из karta.html (с запаянным в нем karta.swf) окошко/страницу - station.html (station.swf) - то реально ли из karta.html (karta.swf) увидеть ЗАКРЫТИЕ station.html (station.swf)??? Что-то ничего на ум не приходит ((_______________________ "......страшно падать и страшно летать, страшно жить, а потом умирать....."
__________________
:-: Косточка. |
|
|||||
|
Регистрация: Oct 2003
Сообщений: 97
|
почти сразу придумал способ - правда он единственный и не очень красивый.... но хоть что-то!
Используя LocalConnection() - просто karta.html/swf постоянно (или с определнным периодом) как бы пингует (ну просто посылает тестовый пакет) station.html/swf и либо по onStatus? либо по ответному сообщению предпринимает определенные действия...........Типа такого вот... Но это же нехилая нагрузка на окошко karta !!! В-общем, может есть попроще способ для решения этой проблемы? __________________________________ "...покуда живешь, сам себе кажешься центром Вселенной..."
__________________
:-: Косточка. |
|
|||||
|
.
|
А если в station.html прописать
<BODY onUnload="opener.closeWindow();"> А в karta.html function clioseWindow(){ alert("Закрыли детское окно!!")ж } Не проверял, но мож поможет? |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
тестовый скрипт:
this.addProperty("is_another_window_opened", function () {
return !new LocalConnection().connect("check_close")
}, null)
//
_root.onMouseUp = function() {
if (this.check_close_lc == undefined) {
trace("another window opened");
this.check_close_lc = new LocalConnection();
this.check_close_lc.connect("check_close");
} else {
trace("another window closed");
delete this.check_close_lc;
}
trace("result: " + this.is_another_window_opened);
};
в первом окне ролик: this.addProperty("is_another_window_opened", function () {
return !new LocalConnection().connect("check_close")
}, null)
дальнейшие действия зависят от того, как быстро тебе нужно узнать о закрытии окна. Можно в главном мувике интервалом чекать:
this.setCheckOpenedInterval = function() {
var opened = _root.is_another_window_opened;
setInterval(function () {
if (_root.is_another_window_opened != opened) {
opened = _root.is_another_window_opened;
trace("window > "+(opened ? "opened" : "closed"));
}
}, 20);
};
this.setCheckOpenedInterval();
|
|
|||||
|
Регистрация: Oct 2003
Сообщений: 97
|
Спасибо за помощь.
Но! 2 BitSky - это же тот путь, что я и преполагал....(просто времени не было разработать скрипт, так что спасибо за код ))). Скорость реакции на закрытие не сильно критична - 1 раз в секунду вполне достаточно проверять.)Меня вообще-то больше всего интересует вопрос о том - единственный ли это путь ??? (отследить закрытие одного окна из другого.) Если нельзя - то "так я и знал" а если можно - "расскажи, хочу знать больше" _____________________________ "...А крылья сломались и мир не заметил потери..."
__________________
:-: Косточка. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
существует два принципиально разных пути:
- ловить событие закрытия окна - периодически сканировать наличие объекта соответственно два решения: - первое не может быть реализовано средствами флэша, поскольку событие закрытия окна относится к окну эксплорера, соответственно может быть отловлено жабой и так или иначе передано во флэш. Этот вариант имеет явные недостатки: 1) вопрос решается не в рамках одной технологии 2) ворая технология - JS имеет массу недостатков - второе как раз таки реализуется в рамках одной технологии, недостатком же является то, что регулярное сканирование это не есть здорово. Остается только найти такой алгоритм, который бы минимально нагружал систему. В твоем случае, если хватает одного раза в секунду, то второй вариант явно предпочтительнее. Но если требовалось бы сканировать например 1 раз в миллисекунду, это было бы очень напряжно. |
|
|||||
|
Регистрация: Oct 2003
Сообщений: 97
|
Понял. Благодарю.
Действительно лучше всего опрашивать периодески. Я как напишу и отлажу - покажу код. Пусть будет наука таким же зеленым. _____________ "...и он меня не остановит, нажав на клавишу Пробел..."
__________________
:-: Косточка. |
|
|||||
|
Регистрация: Oct 2003
Сообщений: 97
|
Смотрите.
Тут из карты вызывается станция. После этого карта постоянно опрашивает станцию и при НЕОТВЕТЕ или неверном ответе - решает что станционнно окно закрыто... Еще показывается номер запроса ...... Короче смотрите - качайте если нужно.. все сам сделал! может правда поэтому код немного избыточен. (и это прелоадер там не мой, а позаимствованный (попросту краденый у одного из форумцов :-)) Но я в этом честно признался! ) Непонятно вот, что - почему ЛокалКоннекшн надо объявлять каждое отдельно, не через ЗПТ-уху или РАВНО ??? До скорого. Спасибо помогающим.
__________________
:-: Косточка. |
![]() |
Часовой пояс GMT +4, время: 09:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|