PDA

Просмотр полной версии : Идентификатор ролика для Firefox


AzagThoth
06.05.2010, 02:55
Есть конструкция:
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 минут
Вопрос решён.
getURL("javascript:alert(document.window.mov)");
Вот так верно для Firefox.

Добавлено через 23 минуты
Только вот:
getURL("javascript:document.window.mov.stopPlay()");
Всё равно не работает.

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

Добавлено через 2 часа 26 минут
В общем вопрос с Firefox решён. Не так элегантно конечно, как хотелось бы, но всё же. Firefox относится к семейству браузеров Netscape. Убедиться в этом можно так:
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. По крайней мере так написано в книжке которую я читаю.
<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. Я всё про те же (http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html) древние методы.

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

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

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