Я думаю, проблема в том, что вам нужно запускать код в скрипте содержимого , когда панель открыта , а не при загрузке документа. Для этого вам нужно отправить событие в скрипт контента, когда событие панели 'show' генерируется на объекте панели. Вот пример того, как это будет работать:
main.js:
var data = require("self").data;
var panel = require("panel").Panel({
contentURL: data.url('panel.html'),
contentScriptFile: [data.url('jquery.js'), data.url('panel.js')]
});
panel.on('show', function() {
console.log('main: opened panel')
panel.port.emit('opened', true);
});
panel.port.on('keyup', function(keyCode) {
console.log(keyCode);
});
require("widget").Widget({
id: 'my-widget',
contentURL: data.url('favicon.ico'),
label: 'Click for panel...',
panel: panel
});
panel.js:
$(function() {
$(document).keyup(function(event) {
event = event || window.event;
self.port.emit('keyup', event.keyCode);
return false;
});
self.port.on('opened', function(data) {
console.log('panel: opened panel')
$('#my-input').focus();
});
});
Вот рабочий пример в Builder:
https://builder.addons.mozilla.org/addon/1047238/latest/