Фокус панель на шоу - PullRequest
       7

Фокус панель на шоу

2 голосов
/ 30 марта 2012

Я использую Add-on Builder для создания иконки на панели инструментов аддона, которая открывает панель.

var panel = require("panel").Panel({
    contentURL: data.url("panel.html"),
    contentScriptFile: [
        data.url("panel.js"),
    ]
});

var widget = new Widget({
    id: "player",
    label: "Player",
    contentURL: data.url('icon.png'),
    panel: panel,
});

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

$(document).keyup(function(event) {
   event = event || window.event;
   self.port.emit('keyup', event.keyCode);
   return false;
});

Есть ли способ сфокусировать панель и мгновенно нажать клавишу отчета?

1 Ответ

1 голос
/ 02 апреля 2012

Я думаю, проблема в том, что вам нужно запускать код в скрипте содержимого , когда панель открыта , а не при загрузке документа. Для этого вам нужно отправить событие в скрипт контента, когда событие панели '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/

...