Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№121-09-2009 16:53:01

oleg.butko
Участник
 
Группа: Members
Зарегистрирован: 16-06-2009
Сообщений: 27
UA: Firefox 3.5

Динамическое обновление XUL и JS

1. Допустим есть тулбар, у которого в chrome.manifest строчка:

Выделить код

Код:

overlay   chrome://browser/content/browser.xul   chrome://projectname/content/ff-overlay.xul

Можно ли без перезапуска FF заменить ff-overlay.xul на ff-overlay2.xul? Чтобы изменения сразу же вступили в силу.
Или, если с перезапуском FF, то как привильно это сделать?
Просто поменять эту строчку в chrome.manifest?

2. Аналоично для JS. В ff-overlay.xul есть ссылки на файлы:

Выделить код

Код:

<script src="overlay.js"/>
  <script src="ff-overlay.js"/>

Что делать, если я хочу динамически переключиться на другой JS, без перезапуска FF?

3. Аналогично вопрос для XPCOM (для JS и для dll). Но там как я понимаю без перезапуска FF не обойтись (для dll).
Но если с перезагрузкой, то как? Нельзя же просто положить новую dll рядом со старой?
В момент перезагрузки FF нужно будет старую удалить.
А как поймать тот момент, когда старую dll можно удалять?

Я так понимаю стандартный механизм обновления всегда требует перезапуска FF, а если делать обновление вручную, то в каких-то случаях можно обойтись без перезапуска.

Вопрос еще можно так сформулировать:
Как перезапустить тулбар (например), без перезапуска FF?

Отсутствует

 

№222-09-2009 12:06:38

formatC'vt
Участник
 
Группа: Members
Откуда: М.О., г. Ивантеевка
Зарегистрирован: 09-01-2005
Сообщений: 94
UA: Firefox 3.5
Веб-сайт

Re: Динамическое обновление XUL и JS

У дополнения "Extension Developer" в меню есть функция "Reload all chrome". По описанию похоже на то, что Вы ищете (Reload all chrome without caching. Useful for testing overlay changes without restarting. )
вот её код:

Выделить код

Код:

function doReloadAllChrome()
  {
    try {
      // assuming bug 256504 makes it in, this should work with jar files
      Components.classes["@mozilla.org/chrome/chrome-registry;1"].getService(Components.interfaces.nsIXULChromeRegistry).reloadChrome();
    } catch(e) { alert(e) }
  }

"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds

Отсутствует

 

№322-09-2009 20:15:49

oleg.butko
Участник
 
Группа: Members
Зарегистрирован: 16-06-2009
Сообщений: 27
UA: Firefox 3.5

Re: Динамическое обновление XUL и JS

formatC'vt
Спасибо, забыл про этот вариант.
Но у reloadChrome есть побочные эффекты. Например пропадают табы. Могут быть еще какие-то.
Тут вот человек спросил, никто не ответил http://forums.mozillazine.org/viewtopic.php?f=19&t=1058825&start=0

Насколько я понял он перезагружает весь хром и причина эффектов в этом. Тут или восстанавливать табы самому или попытаться сделать свой вариант reloadChrome, расширив стандартный.

Может кто подскажет описание как правильно перехватить/дополнить любой XPCOM?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]