Я работаю над аддоном firefox, и вместо того, чтобы иметь весь скрипт в main.js, я пытаюсь разрезать разные файлы.определить функцию как параметр объекта
Прямо сейчас, у меня есть utils.js, который выглядит следующим образом:
'use strict';
module.exports.utils = function() {
return {
_ : require('sdk/l10n').get,
self : require('sdk/self'),
sStorage : require('sdk/simple-storage'),
tabs : require('sdk/tabs'),
pageMod : require('sdk/page-mod'),
toggleButton: require('sdk/ui/button/toggle'),
panel : require('sdk/panel'),
hotkey : require('sdk/hotkeys'),
displayPanel: function(mainPanel, qwantButton) {
if (mainPanel.isShowing) {
mainPanel.hide();
qwantButton.state('window', {
checked: false
});
} else {
mainPanel.show({
position: qwantButton
});
}
}
};
}();
я импортировать utils.js
Into main.js
таким образом: var utils = require(utils);
оба файла находящегося в том же месте: [ROOT]/lib
.
Но я столкнулся с ошибкой из-за этой строки: _ : require('sdk/l10n').get,
для _ не являющейся функцией. Я пробовал написать его так: _ : require('sdk/l10n').get(),
или с get(str)
, но они оба терпят неудачу, первый раз, потому что get нуждается в аргументе, второй раз, потому что str не определена. Есть ли способ определить этот элемент?
[EDIT]: С еще несколько попыток, я узнал, что написание utils.js
таким образом сделал _
работы:
'use strict';
var _ = require('sdk/l10n').get,
self = require('sdk/self'),
sStorage = require('sdk/simple-storage'),
tabs = require('sdk/tabs'),
{PageMode} = require('sdk/page-mod'),
{ToggleButton}= require('sdk/ui/button/toggle'),
{Panel} = require('sdk/panel'),
{Hotkey} = require('sdk/hotkeys');
var qwantButton = new ToggleButton({
id: 'toolbar_button_id',
label: _('toolbar_button_label'),
icon: {
'16': './img/logo-16.png',
'32': './img/logo-32.png',
'64': './img/logo-64.png'
},
onClick: displayMainPanel
});
var mainPanel = new Panel({
width: 525,
height: 175,
contentURL: self.data.url('./panel.html'),
contentScriptFile: self.data.url('./js/panelScript.js')
});
var hotkey = new Hotkey({
combo: 'alt-Q',
onPress: displayMainPanel(qwantButton, mainPanel)
});
function displayMainPanel(mainPanel, qwantButton) {
if (mainPanel.isShowing) {
mainPanel.hide();
qwantButton.state('window', {
checked: false
});
} else {
mainPanel.show({
position: qwantButton
});
}
}
module.exports = function utils() {
return {
_ : _,
self : self,
sStorage : sStorage,
tabs : tabs,
hotkey : hotkey,
qwantButton : qwantButton,
mainPanel : mainPanel,
displayMainPanel: displayMainPanel
};
}();
Но теперь, методы обязательных элементов не работают (например, mainPanel.show()
). ..
Где вы действительно получаете ошибку - при оценке 'require ('sdk/l10n'). Get' или при вызове метода' utils ._() '? – Bergi
При вызове 'utils ._()'. – ss814
Ну, если он говорит, что '_' не является функцией, вы не можете его назвать. Скажите, действительно ли skd/l10n действительно экспортирует метод get. – Bergi