Добрый день, буду очень признательна за подсказку.
Можно ли как-нибудь из расширения передать фокус ввода в адресную строку? грубо говоря, эмулировать клик пользователя мышкой по строке адреса.
window.locationbar.focus() не работает, ругается что нет такой функции...
Я наверное, не очень хорошо сформулировала. проблема в том что если дочернее окно открывать с параметром popup=1, то почем-то перестают приходить события onfocus родительскому окну при клике на него мышкой. Если popup=1 убрать, то обработчик onfocus нормально срабатывает, но появляется инонка на панели задач.
Ну и по w.focus(); не передается фокус :(
Спасибо за помощь, похоже на то что нужно - в панели задач действительно ничего нет.
только вот следующие проблемы появились: У меня при передаче фокуса родительскому окну это окошко должно прятаться (по факту я просто делаю ему размер 0х0), а сейчас даже не возникает событие предачи фокуса родителю. Это вообще как-нибудь можно сделать?
Добрый день.
можно ли как-нибудь сделать так чтобы дочернее окно не отображалось в виндовом таскбаре?
провобовала dependent - не помогает, все равно есть шапка на панели задач.
про dependent вопрос возник: в докуменатации написано
dependent: On Windows platforms, a dependent window does not show on the task bar. A dependent window also stays in front of the parent window.
но у меня оно все равно показывается в панели задач. При этом ведет себя правильно - соварачивается и закрывается вместе с родителем. что я делаю не так? :)
Можно открыть зависимое окно (dependent).
спасибо, вроде то что надо. жаль конечно что под маком оно не работает, но главное чтобы под виндой все было нормально
Elena
http://forum.mozilla-russia.org/uploaded/WTRPZ.gif
красным помечена панель задач зелёным трей
Спасибо! покопаюсь.
Такие еще мысли возникли - у окна нет ли аттрибутов чтобы не показываться в панели задачь? А какое-нибудь событие при нажании на кнопки вверху в углу в заголовке окна?
смысл в том, что я создаю свое окно и оно должно вести себя так же как родительское - закрываться при закрытии главного окна (с этим проблем нет) и сворачиваться при сворачивании главного окна (с этим проблемы). В принципе, если мое окно не будет отображаться на панели задачь, то проблемы нет
Elena
если именно в трей а не в панель задач то думаю стоит покопаться в расширении которое это делает
я немного забыла виндовую терминологию. в чем разница между треем и панелью задачь?
название расширения в котором можно покопаться не подскажите?
03-04-2010 19:41:43
Выделить кодКод:
window.addEventListener("blur", function(e) { var minimized = window.windowState == window.STATE_MINIMIZED; setTimeout(function() { throw minimized; }, 0); }, true);
написала вот такую штуку
window.addEventListener("blur", MAIL.window_blur, false); window_blur:function(evt){ alert("window blur\n"); if(window.windowState == window.STATE_MINIMIZED){ //мой код } },
но что-то событие при сворачивании окна не ловится
…Добрый день.
нужно отлавливать событие сворачивания главного окна в трей. можно ли это как-нибудь сделать?
пробую onresize, при сворачивании в трей не работает.
Elena
Советую почитать про снятие ограничений безопасности через XPCOM)
http://www.intuit.ru/department/se/mozilla/16/10.html
спасибо за ссылку! а не подскажите, в случае с флешкой, которая внутри html документа, который внутри frame
какие должны быть параметры Iface и Prop для
user_pref("capabilities.policy.mypol.Iface.Prop","Keywords")?
>как из javascript получить доступ к функции которая описано внутри iframe
frame_window.wrappedJSObject.function_in_frame()
Спасибо большое! попробую так.
Еще возник такой вопрос - видимо параметры безопасности блокируют взаимодействие флешки и расширения.
т.е. если сюда http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html добавить каталог в который установилось расширения то все работает нормально, если нет - то события из флешки в расширение не доходят.
Можно ли как-то сделать так чтобы не надо было добавалять каталог в доверенные? может быть на стороне флешки? а то заставлять каждого пользователя лезть куда-то не очень хорошо...
Добрый день.
Есть тулбар, на тулбаре есть кнопка, при нажатии на кнопку показывается окошко с флеш плеером (выглядит это все как panel, но панель нельзя использовать потому что тогда не корректно обрабатываются клики мышью см. http://forum.mozilla-russia.org/viewtopic.php?id=42756). В фф 3.5 все здорово и замечательно показывается, а в 3.6 вместо окошка выглядещего как панель получаем обычное окно, на которое к тому-же можно переключится по Alt+tab.
Вопрос в том как можно сделать в 3.6 окно которое будет вести себя так же как panel, какие параметры ему надо задавать?
буду признательна за помощь!
в результате получилась такая конструкция
<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.a
нашла вот что 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>
но оно тоже не очень-то хочет работать.
может быть старшие товарищи растолкуют мне что именно имется в виду в английском посте и что конкретно я делаю не так?
буду очень признательна за помощь
рисую обычную html страничку
[code]<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" />
Вот спасибо! не заметила по невнимательности :)
теперь
вот такая штука работает, но gotourl все равно не ловится
По-моему, это должна быть функция 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>
то флешка не показывается
…Добрый день! :)
Нужна помощь страших товарищей.
Есть окошко
<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
но оно не хочет работать.
Что и где забыла прописать?
,
ага, так работает. спасибо!
Только получается такая штука - я в созданное окно добавляю window.opener.pleer, но при закрытии окна он убивается (музыка перестает играть), несмотря на то что создан в главном окне. я наивно полагала, что если элемент создан в главном окне, то и уничтожатся должен вместе с ним, это не так?
можно все-таки как-то созжать глобальный элемент и обращаться к нему из разных окон? :sick:
Ну, и в консоль ошибок полезно заглядывать, там обычно что-нибудь интересное пишет. =) Пригодится javascript.options.showInConsole = true в about:config или Console² (https://developer.mozilla.org/en/Settin … nvironment).
В консоль смотрю, но в данном случае там было пусто :)
…даже если делать так
init : function(){ var pleer = document.createElementNS("http://www.w3.org/1999/xhtml","div"); pleer.innerHTML="<embed id=\"music_pleer_id\" src=\"_sp.swf\" width=\"320\" height=\"270\" type=\"application/x-shockwave-flash\" /> " appendChild(pleer); },
все равно глухо, что-то у меня уже вообще голова кругом идет... :sick:
как заставить окно показывать флеш?
Elena пишетя правильно понимаю что в этом случае окошко плеера будет появляться только а одном из открытых окон ff?
Да, в том, что было открыто первым. Или нужно делать его отдельным окном.
Пытаюсь запихнуть окошко плеера в отдельное окно.
делаю так
в основном файле создаю
music_pleer = document.createElementNS("http://www.w3.org/1999/xhtml","div"); music_pleer.innerHTML="<embed id=\"music_pleer_id\" src=\"sp.swf\" width=\"320\" height=\"270\" type=\"application/x-shockwave-flash\" /> " var win=window.openDialog("chrome://toolbar/content/music_window.xul", '', "centerscreen,resizable");
в music_window.xul:
<window id="music_window" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="320" height="250" hidechrome="true" onload=init()" </window>
и
[code]init : function(){
var pleer=window.opener.music_frame;
dump(pleer+"\n");
appendChild(pleer);
},
Так что, пожалуй, проще начать с проверки наличия уже запущенного главного окна. И если оно уже открыто, то ничего не делать.
Спасибо, буду пробовать
я правильно понимаю что в этом случае окошко плеера будет появляться только а одном из открытых окон ff?
огромное спасибо за ответ! как окно открыть вроде понятно, как туда передать свою флешку и получать к ней доступ вроде тоже (нашла вот здесь https://developer.mozilla.org/en/Working_with_windows_in_chrome_code)
А иначе придется искать окно с уже загруженной флешкой, а при его закрытии подгружать флешку в другом окне
проблема в том, что флешка проигрывает музыку, и когда открываешь новое окно ff, создается новая флешка и музыка начинает играть заново вторым экземпляром. Нужно чтобы использовался один экземпляр во всех открытых окнах. Не очень поняла как это можно сделать, и где надо объявить
чтобы она создавалась один раз и потом только использовалась?
…Н-ну, попробовать
или тот же метод для какого-нибудь элемента внутри панели.
пробовала, не работает вроде.
тогда такой вопрос - хочу попробовать сделать тоже самое, но запихнув флешку в window. но мне нужен доступ к ней из основного кода тубара.как можно организовать прозрачное взаимодействие между разными окнами одного расширения.
И еще такая проблема всплыла - если открывать много окон ff, то в каждом из низ создается своя панель и в нее грузится своя флешка, можно ли как-нибудь сделать так чтобы использовалась одна на все создаваемые окна?
Еще чуть-чуть поэксперементировала с панелью - четко получается что при клике мышью ей передается фокус ввода, при движении мыши он теряется.
Если нажать на какой-нибудь элемент управления в первый раз-ничего не происходит, если не двигаю мышью нажать второй раз - работает, мышь не двигаем - нажимаем еще раз - все работает нормально, если мышь сдвинуть, то снова - первый клик передает фокус ввода панели, а последующие действуют на орган управления.
Посему, меня очень волнует вопрос - можно-ли как-нибудь передать фокус ввода панели принудительно?
Буду очень признательна за подсказку