Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   События окна flash приложения. (http://www.flasher.ru/forum/showthread.php?t=186243)

ERrorMAKros 30.10.2012 15:35

События окна flash приложения.
 
Подскажите пожалуйста идею или концепцию - как узнать о том, что пользователь пытается уйти из flash приложения в (к примеру) ленту новостей, на свою страницу и т.п.
Т.е. задача состоит в том, что бы узнать что пользователь собирается сменить страницу. Может существует какая то хитрость? Может каким то образом я могу выполнить какой то js код внутри flash приложения и подписаться на его события? Есть идеи?

PainKiller 06.11.2012 12:16

Цитата:

что бы узнать что пользователь собирается сменить страницу.
это невозможно. Телепатию в AS3 еще не придумали. А так Event.DEACTIVATE может помочь, если пользователь по вкладкам переключается.

ERrorMAKros 06.11.2012 22:49

Дело в том, что данный функционал является частью чата. Чат построен не на сокетах, а на get/post запросах. Поэтому когда пользователь уходит из приложения в любую другую часть контакта - не возможно определить фактический выход пользователя из чата.

Krusty 06.11.2012 23:03

Как вам уже заметили, если вкладка неактивна - то Event.DEACTIVATE
Если же вам нужна активность пользователя в вкладке, но вне приложения - ловите событие мыши над стейджем, например. Если определенное время не было событий - будет отмена обновлений, до ре-активации.

ERrorMAKros 07.11.2012 00:04

Нет, этот не тот случай. Но, все же, спасибо за идеи. Я рассчитывал во flash`е подписаться на js событие о перезагрузке страницы. В тот самый момент я бы отправил на сервер команду "выход из чата". Но что бы подписаться на данное событие - js код должен быть размещен, ...и его размещение и является для меня проблемой.

Krusty 07.11.2012 01:08

Цитата:

Сообщение от ERrorMAKros (Сообщение 1103166)
Нет, этот не тот случай. Но, все же, спасибо за идеи. Я рассчитывал во flash`е подписаться на js событие о перезагрузке страницы. В тот самый момент я бы отправил на сервер команду "выход из чата". Но что бы подписаться на данное событие - js код должен быть размещен, ...и его размещение и является для меня проблемой.

Мне кажется, вы ошибаетесь. Почему это код должен быть размещен(где размещен вообще?), что за ограничение? флеш через externalinterface может любой js код выполнить

ERrorMAKros 07.11.2012 15:13

Значит так, вышло у меня сл.
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.external.ExternalInterface;
 
        public class Hook extends Sprite
        {
                private const HTML_CONTAINER_DIV_ID:String = 'FlashOutput';
                private const RECEIVER_FUNCTION_NAME:String = 'onBeforeUnLoad';
 
                public function Hook()
                {
                        if (ExternalInterface.available)
                        {
                                ExternalInterface.addCallback(RECEIVER_FUNCTION_NAME, onBeforeUnLoad);
                                var query:String = 'window.onbeforeunload = function(){document["' + HTML_CONTAINER_DIV_ID + '"].' + RECEIVER_FUNCTION_NAME + '({Event:"onbeforeunload"});}';
                                ExternalInterface.call('function(){' + query + '}');
                        }
                }
 
                private function onBeforeUnLoad(value:Object = null):void
                {
                        // Debug.traceObj( { 'onBeforeUnLoad()':value } );
                        // do some before unload;
                }
        }
}

Работает в Chrome.

Добавлено через 5 часов 52 минуты
...хотя это пофигу, потому что flash контейнер ВКонтакт`а передает allowscriptaccess="never"


Часовой пояс GMT +4, время: 18:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.