Chrome扩展程序内容脚本是否可以触发原始网站收到的键盘事件?

时间:2012-03-29 11:32:33

标签: google-chrome-extension keyboard-events

如果在控制台本身中运行以下代码字:

    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 个答案:

答案 0 :(得分:1)

虽然我无法找到有关内容脚本JS'world'和源站点世界之间事件是否不同的文档,但我在内容脚本中进行了以下操作以将一些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中,并使生成的键盘事件激活原始站点的事件处理程序。