Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展触发Keydown JS_Javascript_Jquery_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展触发Keydown JS

Javascript Chrome扩展触发Keydown JS,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在编写一个Chrome扩展,它需要能够在目标页面的文档级别触发keydown事件。目标页面有一个使用javascript的事件侦听器,如: document.addEventListener("keydown", function (event) {…}); 我的manifest.json如下所示: { "manifest_version": 2, "name": "Title", "version": "1.0", "description": "Tes

我正在编写一个Chrome扩展,它需要能够在目标页面的文档级别触发keydown事件。目标页面有一个使用javascript的事件侦听器,如:

document.addEventListener("keydown", function (event) {…});
我的manifest.json如下所示:

{
    "manifest_version": 2,
    "name": "Title",
    "version": "1.0",

    "description": "Testing",
    "icons": {
        "default_icon": "icon.png"
    },

    "browser_action": {
        "default_title": "Title"
    },

    "author": "James McLaughlin",
    "background": {
        "scripts": ["jquery.js", "event.js"],
        "persistent": false
    },
    "permissions": ["<all_urls>"]
}
和my inject.js(我使用了可用的js注入方法之一,因为它似乎适用:

var injected = injected || (function(){

    var methods = {};

    methods.run = function () {
    injectScript(function () {
        var e = jQuery.Event("keydown");
        e.which = 40;
        $(document).trigger(e);
    });
    }

    function injectScript(func) {
        var actualCode = '(' + func + ')();';
        var script = document.createElement('script');
        script.textContent = actualCode;
        (document.body||document.documentElement).appendChild(script);
        //script.parentNode.removeChild(script);
    }

    chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
        $('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>').appendTo('head');
        var data = {};

        if (methods.hasOwnProperty(request.method))
        data = methods[request.method]();

        sendResponse({data:data});
        return true;
    });

    return true;
})();
但是,在“initKeyEvent”上生成“未定义的不是函数”的

我也尝试了可用的建议,(但该建议没有指定which或keyCode,(但同样没有keyCode或which)

如何从Chrome扩展触发纯JS键控侦听器

谢谢

试试这个(模式)

manifest.json

  "background": {
    "scripts": ["background.js"],
    "persistent": false
  }
js(修改后的
jquery-1.10-2.min-chromium-ext.js

js(background.js)

js(chromium extension.js)

资源‎


片段是否作为一般文档工作?例如,如果尝试将
事件
片段作为
js
而不在
扩展
中实现,那么
按键
事件是否工作?Thanks@guest271314对不起,你到底想让我试一试什么?我不太清楚这是什么意思。这些作品在通用网站上有用吗页面(
document
)?不尝试与
扩展合并
?这篇文章是否作为整体在通用
html
文档中工作,在文档中加载
jquery
?@guest271314啊。现在我想我明白了。我想我可能已经解决了这个问题(请在我说了之后查看上面的html文档)“我将以下内容放在一个HTML文件中并运行:”。基本上,jQuery生成的keydown只触发基于jQuery的keydown监听器,而不是实际的JS监听器。这回答了您的问题吗?请编辑您的答案。不需要代码中的所有许可证(您链接到了完整的许可证)您的列表几乎不可读。@Xan删除了许可证。对列表不确定?需要调整格式吗?谢谢您确定您真的需要一步一步地写出来吗?URL到zip,并说将其作为未打包的扩展加载并带有指向的链接应该更具可读性。提出问题的人似乎更合理,现在投票支持问题是它是否有助于@cryptopi
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>

<body>
<script>
    //listener one
    document.addEventListener("keydown", function (event) {
        alert(event.which);
    });

    //listener two
    $(document).on('keydown', function (event) {
        alert(event.which);
    });

    $(document).ready(function(e) {
        var e = jQuery.Event("keydown");
        e.which = 40;
        $(document).trigger(e);
    });
</script>
</body>
</html>
    var pressEvent = document.createEvent ('KeyboardEvent');
    pressEvent.initKeyEvent ('keydown', true, true, window, true, false, false, false, 65, 0);
    document.dispatchEvent (pressEvent);
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  }
// if `jquery` not in `window`, utilize `jquery-1.10-2.min-chromium-ext.js`
if (!window.jQuery) {
// `jquery-1.10.2.min.js`
};
// _eof_
chrome.browserAction.onClicked.addListener(function(tab) {   
  chrome.tabs.executeScript(null, {file: "jquery-1.10.2.min-chromium-ext.js"}, function() {
    chrome.tabs.executeScript(null, {file: "chromium-extension.js"})
  });   
});
    $(function() {        
      if (window.jQuery) {          
        $(document).on("keydown", function(e) {
          alert(e.which)
        })       
      };        
    });