Форум 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)
-   -   Идентификатор ролика для Firefox (http://www.flasher.ru/forum/showthread.php?t=139614)

AzagThoth 06.05.2010 02:55

Идентификатор ролика для Firefox
 
Есть конструкция:
Код AS1/AS2:

getURL("javascript:alert(mov)");

Содержимое html файла:
Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
        <head>
                <title>Безымянный-1</title>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <style type="text/css" media="screen">
                html, body { height:100%; background-color: #ffffff;}
                body { margin:0; padding:0; overflow:hidden; }
                #flashContent { width:100%; height:100%; }
                </style>
        </head>
        <body>
                <div id="flashContent">
                        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="mov" align="middle">
                                <param name="movie" value="Безымянный-1.swf" />
                                <param name="quality" value="best" />
                                <param name="bgcolor" value="#ffffff" />
                                <param name="play" value="true" />
                                <param name="loop" value="true" />
                                <param name="wmode" value="window" />
                                <param name="scale" value="showall" />
                                <param name="menu" value="true" />
                                <param name="devicefont" value="false" />
                                <param name="salign" value="" />
                                <param name="allowScriptAccess" value="sameDomain" />
                                <!--[if !IE]>-->
                                <object type="application/x-shockwave-flash" data="Безымянный-1.swf" id="mov" width="550" height="400">
                                        <param name="movie" value="Безымянный-1.swf" />
                                        <param name="quality" value="best" />
                                        <param name="bgcolor" value="#ff0000" />
                                        <param name="play" value="true" />
                                        <param name="loop" value="true" />
                                        <param name="wmode" value="window" />
                                        <param name="scale" value="showall" />
                                        <param name="menu" value="true" />
                                        <param name="devicefont" value="false" />
                                        <param name="salign" value="" />
                                        <param name="allowScriptAccess" value="sameDomain" />
                                <!--<![endif]-->
                                        <a href="http://www.adobe.com/go/getflash">
                                                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                                        </a>
                                <!--[if !IE]>-->
                                        </object>
                                <!--<![endif]-->
                        </object>
                        <a name="a"></a>
                        <a name="b"></a>
                        <a name="c"></a>
                </div>
        </body>
</html>

В IE8 выскакивает сообщение: [object]
В Firefox - никакой реакции.
Подозреваю что Firefox игнорирует тег id по каким то собственным соображениям безопасности или ещё по какой причине и в mov оказывается - undefined. В любом случае если кто знает, какой способ для задания идентификатора опознаваемого Firefox, пожалуйста, напишите.

Добавлено через 18 минут
Вопрос решён.
Код AS1/AS2:

getURL("javascript:alert(document.window.mov)");

Вот так верно для Firefox.

Добавлено через 23 минуты
Только вот:
Код AS1/AS2:

getURL("javascript:document.window.mov.stopPlay()");

Всё равно не работает.

Добавлено через 1 час 46 минут
Впрочем как и любые другие методы от JavaScript к Flash из Firefox.

Добавлено через 2 часа 26 минут
В общем вопрос с Firefox решён. Не так элегантно конечно, как хотелось бы, но всё же. Firefox относится к семейству браузеров Netscape. Убедиться в этом можно так:
Код AS1/AS2:

alert(navigator.appName)

Для того, что бы разрешать браузерам семейства Netscape обработчики связанные с Flash. Нужно при описании в html странице использовать тег embed, а не тег object. То есть в моём случае это выглядит так:
Код:

<embed src="Безымянный-1.swf" quality="best" bgcolor="#ffffff" width="550" height="400" name="mov" align="middle" swLiveConnect="true" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"/>
За работоспособность Flash методов отвечает параметр swLiveConnect
По принципу true - можно, false - нельзя. Вообще лично меня такая ситуация не очень радует и хотелось бы конечно, что бы и через Object можно было описать это разрешение. Если кто знает как это сделать(если это вообще возможно), то пожалуйста напишите. Ибо в доках мне этого найти пока не удалось. Может там этого и нет и это не возможно в принципе, а может это просто я слепоглаз.

etc 06.05.2010 07:48

Так опишите тегом param, какие проблемы?

AzagThoth 06.05.2010 08:00

Проблема, что данный тег специфичен для тега embed. По крайней мере так написано в книжке которую я читаю.
Код AS1/AS2:

<param name="swLiveConnect" value="true" />

В действительности, к сожалению не приносит никакого результата :(

etc 06.05.2010 08:02

Кто, param специфичен для embed? А я почему-то всю жизнь думал, что для object.
Выбрасывайте свою книжку, как минимум из-за того, что автор оной не знает о getElementById.

AzagThoth 06.05.2010 08:14

Я не param имел в виду, а swLiveConnect - это он специфичен тегу embed и через param его описание ничего не даёт, к сожалению:)
Большое спасибо, что сказали о getElementById сейчас почитаю.

Добавлено через 15 минут
Всё, о getElementById почитал.
Для обращения к ролику используется так.
Код:

document.getElementById('mov')
Проверил, работает замечательно и в IE и в Firefox.

И всё таки остался один минус, с тем что не понятно как можно обойтись без embed swLiveConnect и разрешить в Firefox внешние обращения через специализированные методы к ролику из кода JavaScript.

etc 06.05.2010 08:32

ExternalInterface давным давно придумали.

AzagThoth 06.05.2010 09:00

Ммм, не знаю, но разве ExternalInterface каким то образом может помочь разрешить использовать коллекцию методов взаимодействующих с флеш-роликом из JS. Я всё про те же древние методы.

etc 06.05.2010 09:04

Не занимайтесь мазохизмом, зарегистрируйте интересующие вас методы через EI.

AzagThoth 06.05.2010 09:09

Всё, так и буду и делать. Я просветлился по ходу. Спасибо!

Добавлено через 15 минут
Всю ночь прострадал крепким идиотизмом. Блин злостно однако. Зато до чего же смешно :)


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

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