Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 从popup.html到content.js的Chrome扩展sendMessage不工作_Javascript_Google Chrome Extension_Communication - Fatal编程技术网

Javascript 从popup.html到content.js的Chrome扩展sendMessage不工作

Javascript 从popup.html到content.js的Chrome扩展sendMessage不工作,javascript,google-chrome-extension,communication,Javascript,Google Chrome Extension,Communication,我正在尝试构建一个扩展,它将数据从popup.html发送到tab dome,但是我无法让sendMessage正常工作,我不明白为什么。 我遵循以下指导原则: 以下是我的资料来源: manifest: { "manifest_version": 2, "name": "OMG Campaign Preview Maker", "description": "Easy OMG Campaign Preview Maker", "background": { "scrip

我正在尝试构建一个扩展,它将数据从popup.html发送到tab dome,但是我无法让sendMessage正常工作,我不明白为什么。 我遵循以下指导原则:

以下是我的资料来源:

manifest:
{
   "manifest_version": 2,
   "name": "OMG Campaign Preview Maker",
   "description": "Easy OMG Campaign Preview Maker",
   "background": {  "scripts": ["background.js"]},
   "version": "0.1",
   "content_scripts": [
        {
          "matches": ["http://*/*", "https://*/*"],
          "js": ["jquery-1.7.min.js", "content.js"]
        }
    ],
   "browser_action": {
      "default_icon": "logo_128.jpg",
      "popup": "popup.html",
      "default_popup": "popup.html"
   },
   "icons": {
      "128": "logo_128.jpg"
   }
}
popup.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.7.min.js"></script>
<script type="text/javascript" src="popup.js"></script>
</head>
<body>
<h1>Clicks</h1>
<p>extra1:
  <input type="text" name="extraclicks[]" id="extra1">
  <br>
  extra2:
  <input type="text" name="extraclicks[]" id="extra2">
  <br>
  extra3:
  <input type="text" name="extraclicks[]" id="extra3">
  <br>
  <br>
  <input type="submit" name="sendclicks" id="sendclicks" value="Invia Clicks">
</p>
</body>
</html>
content.js

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    console.log("content.js > onMessage");

    if (request.type == 'clicks') {
        console.log("content.js > clicks");
        sendResponse({msg: "success"});
    }
});
虽然我可以在控制台中完美地看到popup.js发布的日志,但我看不到content.js发布的任何日志。
我做错了什么?

哦,我想你只是把消息发送到popup.js本身

getSelected in popup.js监听弹出选项卡的活动(它也是chrome中的一个选项卡) 因此,选项卡id实际上是弹出式选项卡,而不是插入content.js的选项卡

顺便说一句,getSelected已被弃用。尝试其他选择? 好吧,我很蠢。。。 错的是。。。我正在看的督察页面。 content.js中的“console.log”打印在选项卡检查器控制台上,而不是在扩展控制台上


我希望它能帮助其他人。

这很奇怪,getSelected出现在google在其信息指南中的示例中,顺便说一句,如果我切换选项卡,则
console.log(“popup.js>tab id::+tab.id)
返回一个不同的数字。如果id指向popup.html,则在切换选项卡时打印的值不应更改。此外,在getCurrent引用中,它说“如果从非选项卡上下文(例如:背景页或弹出视图)调用,则可能未定义。”这就是我的情况在
content.js
中,但我在inspector控制台中什么也看不到。我怀疑文件是否被加载了。
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    console.log("content.js > onMessage");

    if (request.type == 'clicks') {
        console.log("content.js > clicks");
        sendResponse({msg: "success"});
    }
});