Как использовать oncommand в опциях.ксул для того, чтобы вызвать функцию на ушко.js?
Я пытаюсь вызвать метод changePassword () из bootstrap.файл js, но я не могу понять, как это сделать.. Загрузчик.js находится в корне папки проекта и параметров.ксуль тоже здесь ./ chrome / content /
<setting type="control" title="&passwordBtn;">
<button label="&passwordBtn;" oncommand="changePassword();"/>
</setting>
Заранее спасибо! :)
1 ответ:
Во-первых, измените свои параметры.xul добавьте атрибут
id
для последующего выбора, ему не нужен атрибутoncommand
, поэтому мы можем удалить его.<setting type="control" title="&passwordBtn;"> <button id="password" label="&passwordBtn;" /> </setting>
Затем откройте панель настроек и добавьте прослушиватель событий, нажатый на кнопку, вручную. Ниже приведен пример bootstrap.js
const log = function() { dump(Array.slice(arguments).join(' ') + '\n'); } const {classes: Cc, interfaces: Ci} = Components; const OBS = Cc['@mozilla.org/observer-service;1'] .getService(Ci.nsIObserverService); const myAddonId = 'my_addon_id' // same as install.rdf "<em:id>" tag value let optionObserver = { observe: function(subject, topic, data) { if (topic !== 'addon-options-displayed' || data !== myAddonId) { return; } let document = subject.QueryInterface(Ci.nsIDOMDocument); let button = document.getElementById('password'); button.addEventListener('command', this.changePassword); }, changePassword: function(event) { log('password button clicked!'); // do your stuff... } } let install = function(data, reason) {}; let uninstall = function(data, reason) {}; let startup = function(data, reason) { OBS.addObserver(optionObserver, 'addon-options-displayed', false); }; let shutdown = function(data, reason) { OBS.removeObserver(optionObserver, 'addon-options-displayed', false); };