Может ли скрипт содержимого Chrome Extension вызвать событие клавиатуры, полученное исходным сайтом? - PullRequest
0 голосов
/ 29 марта 2012

Следующие кодовые слова при запуске в самой консоли:

    var $inputbox = $('input#inputfield');
    var SPACE_KEYCODE = 32;
    var space_down = $.Event( 'keyup', { which: SPACE_KEYCODE } );
    $inputbox.trigger(space_down)

Я вижу инициируемое событие и ответную страницу.

Однако при запуске того же кода в скрипте содержимого через расширение Chrome происходит сбой в автоматическом режиме. Запись результатов в файле $ inputbox.trigger (space_down) показывает, что он правильно возвращает элемент.

Намерение здесь состоит в том, чтобы существующая страница JS отвечала на событие клавиатуры из расширения. Возможно ли это?

1 Ответ

1 голос
/ 29 марта 2012

Хотя я не смог найти документацию о том, различаются ли события между «миром» JS сценария контента и миром сайта происхождения, в скрипте контента я сделал следующее, чтобы загрузить JS в window.location,это работает в содержании сайта происхождения.

// In order to send keyboard events, we'll need to send them from the page's JS
var load_into_page_context = function(file) {
    var file_url = chrome.extension.getURL(file);
    $.get(file_url, function(script_contents) {
        window.location = 'javascript:'+script_contents
    })

}

    load_into_page_context("injectme.js");

Это загрузит injectme.js (в комплекте с расширением) в window.location и заставит сгенерированные события клавиатуры активировать обработчики событий исходного сайта.

...