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

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

№107-01-2009 15:42:51

AllSeeingI
Участник
 
Группа: Members
Зарегистрирован: 12-03-2007
Сообщений: 107
UA: Firefox 3.0

Расширение-Singleton?

Здравствуйте все,

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

Т.е. если пользователь запускает 2е окно файрфокса - то расширение в нём должно понимать, что одно окно браузера уже запущено и никаких действий выполнять не надо.

Можно это как-то провернуть? Заранее спасибо.

Отсутствует

 

№207-01-2009 16:06:07

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Расширение-Singleton?

"2е окно файрфокса" требует пояснение. Это второе окно одного приложения, или это окно второго приложения (напр. другой версии).
Если второй вариант, то, скорее всего, файл/запись в реестр или собственная бинарная компонента, несложный сетевой сервис (можно на js). Если первый - то же самое, плюс preferences, компоненту можно на js.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№307-01-2009 16:49:49

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 3.0

Re: Расширение-Singleton?

Тоже думал о такой проблеме. Но вот в чём загвоздка: если браузер завершит работу аварийно, расширение не успеет снять блокировку - будь то с ключа в preferences или с файла (о реестре говорить не приходится, потому что это не кроссплатформенный инструмент). Тогда при всех следующих запусках расширение будет думать, что уже один экземпляр запущен, и ничего не делать. Если расширение написано для себя, это не так страшно -- можно снять блокировку вручную. Но другие пользователи, не посвящённые в механизм, будут сбиты с толку.

Отсутствует

 

№407-01-2009 20:50:27

KML
Участник
 
Группа: Extensions
Откуда: Днепропетровск
Зарегистрирован: 01-06-2005
Сообщений: 422
UA: Firefox 3.0

Re: Расширение-Singleton?

+1 за компоненту.


:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0

Отсутствует

 

№507-01-2009 22:10:35

AllSeeingI
Участник
 
Группа: Members
Зарегистрирован: 12-03-2007
Сообщений: 107
UA: Firefox 3.0

Re: Расширение-Singleton?

Может как-то через nsIWindowMediator можно работать? Если же писать компоненту - тогда можно искать процессы firefox.exe...

Отсутствует

 

№608-01-2009 22:12:37

AllSeeingI
Участник
 
Группа: Members
Зарегистрирован: 12-03-2007
Сообщений: 107
UA: Firefox 3.0

Re: Расширение-Singleton?

Как вариант. Пусть у нас есть расширение, и работа ведётся основным объектом myExtensionObject. Рассмотрим ф-цию инициализации этого расширения:

Выделить код

Код:

init: function()
{
  //First - check if any instances of Firefox already running:
  var watcher = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher);
  var winenum = watcher.getWindowEnumerator();
  var wncount = 0;

  while(winenum.hasMoreElements())
  {
	var win = winenum.getNext();
	if(win && win.myExtensionObject) wncount++;
  }

  // At least one instance is in place - stop all operations.
  if(wncount > 1) return;
  ...
}

Что думаете?

Отредактировано AllSeeingI (08-01-2009 22:15:20)

Отсутствует

 

№708-01-2009 22:19:07

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Расширение-Singleton?

Что думаете?

Пока тема "2-го окна фокса" не раскрыта в полной мере, думать особенно не над чем.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№809-01-2009 05:34:54

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Расширение-Singleton?

Если первый вариант, то см. здесь. Лучше всего XPCOM-компонент на JavaScript, т.к. будет работать во всех версиях.

Если второй вариант, то, думаю, "несложный сетевой сервис" - самое надежное решение.

Отсутствует

 

№909-01-2009 16:37:47

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Sunrise 1.7

Re: Расширение-Singleton?

Так а нельзя создать глобальную переменную вне настроек, чтобы ее видели в течение сеанса все окна?

Отсутствует

 

№1009-01-2009 22:30:10

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Расширение-Singleton?

Так а нельзя создать глобальную переменную вне настроек, чтобы ее видели в течение сеанса все окна?

В JS все переменные - на самом деле поля какого-то глобального объекта (обычно своего window). Поэтому надо найти (или создать) какой-нибудь такой объект.

По ссылке, которую я привел("здесь" == Working with windows in chrome code - Advanced data sharing), как раз написано, как это сделать:
1. Hidden window - уже готовое окно, но недокументированное, так что лучше не использовать.
2. [url=https://developer.mozilla.org/en/FUEL/SessionStorage]Application.storage[url]из FUEL. Самый простой способ, но только Firefox 3.0+
3. Пустой XPCOM-компонент, написанный на JS (с установленным wrappedJSObject). Использовать, если нужна совместимость с Fx 2.0 или Thunderbird (пока 3.0 не вышел)

Отсутствует

 

№1111-01-2009 11:18:26

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Расширение-Singleton?

Если под винду и разные окна == разные профили - мб лучше всего написать сервис.
А вообще сделать прогу/скрипт, которая постоянно отслеживает поступающие события (хотя бы даже файлы с заданием, появляющиеся в папке), проблемы не составит.
В обоих случаях блокировка не нужна.

Версия с блокировкой будет нормально работать, если сделать её временной с периодическим подтверждением.


---  ---

Отсутствует

 

Board footer

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