Страницы: 1
Добрый день!
Нужна помощь страших товарищей.
Есть окошко
<window id="music_window" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="music.init()" <script type="application/x-javascript" src="chrome://toolbar/content/music_window.js" /> <browser id="music_pleer_id" src="http://myserver.ru/player.swf" width="320" height="300" type="content" /> </window>
В нем показывается флеш.
Флеш посылает сигналы о своем состоянии
Эти сигналы надо ловить в расширении и на них реагировать.
Пытаюсь делать так:
в music_window.js
но оно не хочет работать.
Что и где забыла прописать?
Отсутствует
По-моему, это должна быть функция browser.contentWindow.gotourl – в том же контексте, что и *.swf.
В общем случае, наверное, что-то вроде того, что сделано в Stylish:
var stylishCommon = { ... dispatchEvent: function(doc, type) { if (!doc) { return; } var stylishEvent = doc.createEvent("Events"); stylishEvent.initEvent(type, false, false, doc.defaultView, null); doc.dispatchEvent(stylishEvent); }, ... }; stylishCommon.dispatchEvent(doc, "styleLoadCode");
То есть на уровне странице генерируются события, а расширение их ловит. Или наоборот.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
По-моему, это должна быть функция browser.contentWindow.gotourl – в том же контексте, что и *.swf.
а у меня получается в другом?
вообще, читала вот этот документ http://flash-ripper.com/articles/flash/ … erface.php
единственное подозрение из-за чего может не работать - то что я встариваю флеш через browser, а надо через embed.
Но когда пытаюсь рисовать такое окно
<window id="music_window" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="music.init()" <script type="application/x-javascript" src="chrome://toolbar/content/music_window.js" /> <embed id="music_pleer_id" src="http://myserver/iplayer_sp.swf" width="320" height="300" type="application/x-shockwave-flash" name="musicpleername" pluginspage="http://www.adobe.com/go/getflashplayer" /> </window>
то флешка не показывается
Отсутствует
а у меня получается в другом?
Из <browser type="content"> нельзя увидеть привилегированный код, подключенный «снаружи».
то флешка не показывается
Или <object>... или другое пространство имен. Но только если это «доверенная» флешка. А иначе нужно ее как content добавлять – чтобы без лишних привилегий.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Вот спасибо! не заметила по невнимательности
теперь
вот такая штука работает, но gotourl все равно не ловится
Отсутствует
рисую обычную html страничку
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=koi8-r" /> <script> function gotourl(arg, arg1, arg2){ alert("gotourl!!!"); } </script> <noscript> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="320" height="270" id="player" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="iplayer.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="iplayer.swf " quality="high" bgcolor="#ffffff" width="320" height="270" name="player" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /> </object> </noscript> </body> </html>
все отлично работает,gotourl вызывается.
Пытаюсь сделать тоже самое в расширении
<window id="music_window" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="320" height="300" hidechrome="true" windowtype="music_window_type" <script type="application/x-javascript" src="chrome://toolbar/content/window.js" /> <script language="JavaScript" type="text/javascript"> function gotourl(arg, arg1, arg2){ alert("gotourl!!!"); } </script> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="320" height="270" id="player" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="iplayer.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed id="player" xmlns="http://www.w3.org/1999/xhtml" src="player.swf" width="320" height="300" type="application/x-shockwave-flash" name="musicpleername" pluginspage="http://www.adobe.com/go/getflashplayer" allowScriptAccess="sameDomain" allowFullScreen="false"/> </object> </window>
работать не хочет. в чем может быть дело? какие-нибудь настройки или что-то еще?
Отредактировано Elena (16-02-2010 20:29:19)
Отсутствует
нашла вот что http://forums.mozillazine.org/viewtopic … 9&t=781475
c учетом этого пробую писать вот так
<window id="music_window" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="320" height="300" hidechrome="true" windowtype="window_type" <iframe type="content" id="mp" src="player.swf" width="320" height="300"> <script language="JavaScript" type="application/x-javascript"> function gotourl(arg, arg1, arg2){ dump("gotourl!!!"); } </script> </iframe> <script type="application/x-javascript" src="chrome://toolbar/content/music_window.js" /> </window>
но оно тоже не очень-то хочет работать.
может быть старшие товарищи растолкуют мне что именно имется в виду в английском посте и что конкретно я делаю не так?
буду очень признательна за помощь
Отсутствует
в результате получилась такая конструкция
<window id="music_window" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml" width="320" height="300" <iframe type="content" id="music_pleer" name="music_pleer" src="chrome://toolbar/locale/player.html" width="320" height="300"/> <script type="application/x-javascript" src="chrome://toolbar/content/music_window.js" /> </window>
в player.html есть такая штука
а в music_window.js пытаюсь сделать селедующее
function cookie_updater(){
var pleer=document.getElementById('music_pleer').contentWindow.document;
pleer.callExternalInterface2();}
но функция callExternalInterface2(); не вызывается. При этом в другом месте получаю доступ к флешу
var pleer=document.getElementById('music_pleer');
dump(pleer+"\n");
pleer.contentWindow.document.addEventListener('gotourl_event', function(e) { gotourl(e); }, false, true);
как из javascript получить доступ к функции которая описано внутри iframe?
Отсутствует
>как из javascript получить доступ к функции которая описано внутри iframe
frame_window.wrappedJSObject.function_in_frame()
Спасибо большое! попробую так.
Еще возник такой вопрос - видимо параметры безопасности блокируют взаимодействие флешки и расширения.
т.е. если сюда http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html добавить каталог в который установилось расширения то все работает нормально, если нет - то события из флешки в расширение не доходят.
Можно ли как-то сделать так чтобы не надо было добавалять каталог в доверенные? может быть на стороне флешки? а то заставлять каждого пользователя лезть куда-то не очень хорошо...
Отсутствует
Elena
Советую почитать про снятие ограничений безопасности через XPCOM)
http://www.intuit.ru/department/se/mozilla/16/10.html
спасибо за ссылку! а не подскажите, в случае с флешкой, которая внутри html документа, который внутри frame
какие должны быть параметры Iface и Prop для
user_pref("capabilities.policy.mypol.Iface.Prop","Keywords")?
Отсутствует
решили в итоге ? я столкнулся с такой же проблемой ! FSCommand и ExternalInterface через добавление сюда http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html работают
у меня флешка вставляется в расширение через embed ( не в iFrame )
Отредактировано easy_me (02-02-2011 13:23:36)
Отсутствует
Страницы: 1