Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   [AS+JS] Определение момента загрузки HTML страницы и флешки (http://www.flasher.ru/forum/showthread.php?t=75573)

__i 15.02.2006 16:05

[AS+JS] Определение момента загрузки HTML страницы и флешки
 
Проблема такова:

Эти дебильно-умные дядьки выдумали 2 вида браузеров IE и Мозилу (оперу я не в счет) с разными видами событий и способов обработки содержимого страниц!!!
теперь по теме:

Есть флешка которая из яваскрипта должна получить какие-то данные.
Эти данные можно получить только после полной загрузки страницы.

Все вроде просто setVariable, getURL или fscommand, но не так просто как хотелось бы, получаеться 2 варианта которые ВСЕГДА нормально работают только в одном из браузеров %((

Вариант 1.
Вешаем нашу функцию получения данных на обработчик события onLoad все прекрасно работает, но только в ИЕ. в ФФ нет. Я это объясняю следующим: у ИЕ оно срабатывает когда вся страница загрузилась, причем во время загрузки ИЕ сразу создает все сопутствующие объекты (т.е. сразу создает контейнер для флешки и начинает сразу грузить в него флешку). У ФФ тоже когда страница загружена полностью, но ФФ создает сопутствующие объекты только после того как загрузил страницу, что очень печально получаеться мы наши данные отсылаем еще пустому контейнеру для флешки%((. как выход пытался воткнуть так onLoad=setTimeout('send()', 100); но блин это не выход, иногда этот тайм аут не успевает - смысл увеличивать его тоже не приведет не к чему (не успело за 0.1 сек не факт что успеет за 2 сек %( ).

Вариант 2.
Идем на поводу у ФФ. Получаеться что он загружает флешку только после того как загрузил контент страницы. т.е если мы из флешки вызовем getURL или fscommand для вызова send то всегда это произойдет после загрузки страницы (действует и для setVariable), но тут нас обламывает ИЕ он то флешку уже вгрузил а страницу еще не всю.

Посоветуйте кто, что может %).
Хотелосьбы найти приятное решение которое былобы в одном блоке яваскрипта ну и внутри флешки. чтоб не разбрасывать весь скрипт по всей странице.

PS если я что-то неверно сказал исправте меня.

Antares 15.02.2006 16:16

Сделать функцию, которая делает && двум флагам: исполнения body.onLoad и вызова функции о загрузке из .swf

__i 15.02.2006 16:26

тут еще такая мелкая запара хотелосьбы совсем избежать использование
<body onLoad="....">.
Это будет что-то типа баннера (т.е. вставляемый кусок НТМЛ и Яваскрипта, без изменения самой страницы вцелом).

пытался сделать window.onload = send
document.onload = send
но это работает только для ИЕ. %(( в ФФ есть альтернатива этому ?

meiciuc 15.02.2006 19:19

во избежание лишних вопросов сразу кидаю кусок работающего кода(без полного списка всех переменных). Суть вот в чем - переменные можно передавать во флешку прямо из хтмл через FlashVars . Обращаю ваше пристальное внимание на то, что эти переменные должны быть и в таге <PARAM и в таге <EMBED. С первым работает под ие, а со вторым под фф. Я в свое время часа 2 потратил, пока на фф заработало. Под фф флеш-плейера для линукса тоже много глюков. Берегитесь.

Потом к переменным можно обращаться по тем же именам, что и в тагах , типа _root["numeJoc"]; Причем - эти переменные создаются сами внутри клипа, их даже не надо создавать на момент компилляции.

Код:

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
        ID="partide" WIDTH="635" HEIGHT="450" ALIGN="">
                <PARAM NAME=movie VALUE="http://dzserv.neogen.ro/new/partide3v012.swf">
                <PARAM NAME=FlashVars VALUE="numeJoc=scorch&numeTabla=doizece&debug=0">
                <PARAM NAME=quality VALUE=high>
                <PARAM NAME=bgcolor VALUE=#FFFFFF>
                <EMBED src="http://dzserv.neogen.ro/new/partide3v012.swf"
                        FlashVars="numeJoc=scorch&numeTabla=doizece&debug=0"
                        quality=high
                        bgcolor=#FFFFFF
                        WIDTH="635" HEIGHT="450"
                        swLiveConnect=true
                        ID="partide"
                        NAME="partide"
                        TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
                </EMBED>

        </OBJECT>


__i 15.02.2006 19:31

вобщем я сделал приблизительно так ка говорил Антарес.

meiciuc немного не то, данные нужно передавать не статические а динамические, т.е. сформировать их во время работы! Но все равно спасибо за заботу %).

ЗЫ Опера мастдай. я даже не хочу думать о том как это сделать чтоб под нее работало !, и наверное постараюсь съехать сославшись на 1.5-2 % пользователей %)


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

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