Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 谷歌';s Chrome扩展消息示例代码未定义响应_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 谷歌';s Chrome扩展消息示例代码未定义响应

Javascript 谷歌';s Chrome扩展消息示例代码未定义响应,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,谷歌关于Chrome扩展开发的文档已经发布。我正在尝试示例代码: background.js chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { console.log(response.farewell); }); }

谷歌关于Chrome扩展开发的文档已经发布。我正在尝试示例代码:

background.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
        console.log(response.farewell);
    });
});
content_script.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        console.log(sender.tab ?
            "from a content script:" + sender.tab.url :
            "from the extension");
        if (request.greeting == "hello")
            sendResponse({farewell: "goodbye"});
        //return true;
    });
它们不包括清单文件,所以我创建了一个(和三个图标):

{
“背景”:{
“坚持”:假,
“脚本”:[“background.js”,“content_script.js”]
},
“内容脚本”:[{
“js”:[“content_script.js”],
“matches”:[“adding
return true;
。我试过了,但没什么不同(在上面的代码中,它被注释掉了)


有人能看到我是如何工作的吗?谢谢!

我看不出你的内容脚本最终会被注入任何选项卡中-除非我遗漏了什么,否则你的清单中不应该有一个
“内容脚本”
?或者在background.js中有一个
chrome.tabs.executeScript
-内容脚本必须在里面"有些内容我在清单中确实有一个
content\u scripts.js
。我是Chrome扩展的新手,所以我可能是错的,但我假设如果需要额外的代码,谷歌会将其包括在内。不,你在
后台
属性中有一个名为
content\u script.js
的文件-
content\u script.js
不是special name-也许您需要阅读更多关于
manifest.json
在后台页面中包含名为content_script的文件没有任何意义。它不是实际的内容脚本,它在同一后台页面中运行,而不是在网页中运行,并且它不会接收来自同一后台页面上下文的消息。这就是为什么您会收到n未定义的值。继续阅读有关内容脚本的文档。我看不出您的内容脚本最终将如何注入任何选项卡-除非我遗漏了什么,否则您不应该有一个
“内容脚本”吗
在您的清单中?或者是background.js中的
chrome.tabs.executeScript
-内容脚本必须“进入”有些内容我在清单中确实有一个
content\u scripts.js
。我是Chrome扩展的新手,所以我可能是错的,但我假设如果需要额外的代码,谷歌会将其包括在内。不,你在
后台
属性中有一个名为
content\u script.js
的文件-
content\u script.js
不是special name-也许您需要阅读更多关于
manifest.json
在后台页面中包含名为content_script的文件没有任何意义。它不是实际的内容脚本,它在同一后台页面中运行,而不是在网页中运行,并且它不会接收来自同一后台页面上下文的消息。这就是为什么您会收到n未定义的值。继续阅读有关内容脚本的文档。
{
    "background": {
        "persistent": false,
        "scripts": ["background.js", "content_script.js"]
    },
    "content_scripts": [ {
        "js": ["content_script.js"],
        "matches": ["<all_urls>"]
    } ],
    "description": "Test passing messages between a background script and a content script using Google's example code.",
    "icons": {
        "16": "img/icon_16x16.png",
        "48": "img/icon_48x48.png",
        "128": "img/icon_128x128.png"
    },
    "manifest_version": 2,
    "name": "Test Google Chrome extension messaging",
    "permissions": ["notifications"],
    "version": "2017.8.25"
}