Я понял из Bugzilla, что вы можете установить URL-адрес параметров в install.rdf на произвольный js, и он будет работать отлично. Проблема только в том, что окно деактивируется, как будто над ним открылся невидимый диалог, и ни на что его не закрыть.
Например: В моем аддоне здесь: простой тестовый пример, при запуске он просто предупреждает о запуске, а в диспетчере аддонов он показывает кнопку параметров, при нажатии он делает notifyObserver
, но затем переходит во все диалоговые режимы: GitHub :: Noitidart / PortableTester
Вы можете установить это дополнение прямо из репозитория с помощью дополнения GitHubExtensionInstaller а>
Код в моем optionsurl:
<em:optionsURL>
javascript:Components.utils.import('resource://gre/modules/Services.jsm');Services.obs.notifyObservers(window, 'hellothisisyourcaptainspeaking', 'options')
</em:optionsURL>
Я хотел бы не переходить в этот режим невидимого диалога после нажатия кнопки параметров. Или, если мы не можем предотвратить это, я бы хотел добавить некоторый код в optionurl, чтобы выйти из этого заблокированного режима.
В этой заметке я пробовал этот код, и он не работал:
javascript:
Components.utils.import('resource://gre/modules/Services.jsm');
Services.obs.notifyObservers(window, 'hellothisisyourcaptainspeaking', 'options');
var DOMWin = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebNavigation).QueryInterface(Components.interfaces.nsIDocShellTreeItem).rootTreeItem.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow);
var utils = DOMWin.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowUtils);
utils.leaveModalState();
Это можно увидеть в этом коммите здесь: GitHub :: Коммит Noitdart / PortableTester показывает попытку покинуть это диалоговое окно режим