Google chrome google chrome中未触发后台页面功能:

Google chrome google chrome中未触发后台页面功能:,google-chrome,google-chrome-extension,Google Chrome,Google Chrome Extension,我正在使用以下代码访问google chrome中的后台页面功能 popup.html function sendRequest(ea,eb) { console.log("Inside"); chrome.extension.sendRequest({ea:ea,eb:eb}, function(response) { alert(response.farewell); }); } <html> &

我正在使用以下代码访问google chrome中的后台页面功能

popup.html

function sendRequest(ea,eb)
{
console.log("Inside");
chrome.extension.sendRequest({ea:ea,eb:eb},
        function(response)
        {
            alert(response.farewell);

        });    
}
<html>
<body>
<script>
chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
sendResponse({farewell: "goodbye"});
  })
</html>
</body>
</script>
background.html

function sendRequest(ea,eb)
{
console.log("Inside");
chrome.extension.sendRequest({ea:ea,eb:eb},
        function(response)
        {
            alert(response.farewell);

        });    
}
<html>
<body>
<script>
chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
sendResponse({farewell: "goodbye"});
  })
</html>
</body>
</script>

但是,它不会打印警报。谁能告诉我我做错了什么吗?

你的background.HTML的HTML格式非常不正确,应该修复


chrome.extension.onRequest.addListener(
功能(请求、发送方、发送响应){
sendResponse({再见:“再见”});
})
标签应按打开的相反顺序关闭,以保持正确的层次结构。由于您没有这样做,
元素的格式不正确,并且包含无效语法
,因此无法正确执行

既然您正在使用清单,您可能需要考虑将该脚本元素的内容(忽略所有HTML)抽象到它自己的文件(例如背景.js),并将清单更改为以下内容;p>

{
“名称”:“我的第一个分机”,
“版本”:“1.0”,
“清单版本”:2,
“最低chrome版本”:“18”,
“背景”:{
“脚本”:[“background.js”]
},
“内容脚本”:[
{
“匹配项”:[“http://*/”],
“js”:[“popup.js”]
}
],
“描述”:“我做的第一次扩展。”,
“浏览器操作”:{
“默认图标”:“icon.png”,
“默认弹出窗口”:“mine.html”
},
“权限”:[
“选项卡”、“http://*/”、“背景”
],
“web可访问的资源”:[“loading.html”、“bu.png”]
}
请注意,现在包含一个字符串数组,表示要加载(按指定顺序)到动态生成的后台页面的JavaScript文件

我还将
minimum\u chrome\u version
属性设置为18,因为清单版本2仅应在针对此版本的chrome及更高版本时使用

当开发者需要支持Chrome的旧版本时,他们现在应该只需要使用背景页面而不是脚本

编辑 它只是点击了一下,表示您正试图在后台页面中执行嵌入式JavaScript。清单版本2引入了禁止执行内联(例如,
onclick=“showDialog();”
href=“javascript:void(0);”
)和嵌入式javascript的命令。这就是为什么background.html不起作用,background.js也会起作用的原因。您还需要确保popup.html不包含任何嵌入式JavaScript。最好的解决方法(通常也是最佳实践)是将所有JavaScript抽象到HTML文件引用的自己的文件(例如popup.js)中。比如,


您的background.HTML的HTML格式极不正确,应予以修复


chrome.extension.onRequest.addListener(
功能(请求、发送方、发送响应){
sendResponse({再见:“再见”});
})
标签应按打开的相反顺序关闭,以保持正确的层次结构。由于您没有这样做,
元素的格式不正确,并且包含无效语法
,因此无法正确执行

既然您正在使用清单,您可能需要考虑将该脚本元素的内容(忽略所有HTML)抽象到它自己的文件(例如背景.js),并将清单更改为以下内容;p>

{
“名称”:“我的第一个分机”,
“版本”:“1.0”,
“清单版本”:2,
“最低chrome版本”:“18”,
“背景”:{
“脚本”:[“background.js”]
},
“内容脚本”:[
{
“匹配项”:[“http://*/”],
“js”:[“popup.js”]
}
],
“描述”:“我做的第一次扩展。”,
“浏览器操作”:{
“默认图标”:“icon.png”,
“默认弹出窗口”:“mine.html”
},
“权限”:[
“选项卡”、“http://*/”、“背景”
],
“web可访问的资源”:[“loading.html”、“bu.png”]
}
请注意,现在包含一个字符串数组,表示要加载(按指定顺序)到动态生成的后台页面的JavaScript文件

我还将
minimum\u chrome\u version
属性设置为18,因为清单版本2仅应在针对此版本的chrome及更高版本时使用

当开发者需要支持Chrome的旧版本时,他们现在应该只需要使用背景页面而不是脚本

编辑 它只是点击了一下,表示您正试图在后台页面中执行嵌入式JavaScript。清单版本2引入了禁止执行内联(例如,
onclick=“showDialog();”
href=“javascript:void(0);”
)和嵌入式javascript的命令。这就是为什么background.html不起作用,background.js也会起作用的原因。您还需要确保popup.html不包含任何嵌入式JavaScript。最好的解决方法(通常也是最佳实践)是将所有JavaScript抽象到HTML文件引用的自己的文件(例如popup.js)中。比如,



您还有其他听众吗?如果您有多个侦听器,则只会使用第一个发送响应的侦听器,其他侦听器将被忽略。是否可以发布manifest.json文件?是否还有其他侦听器?如果您有多个侦听器,则只使用第一个发送响应的侦听器,其他侦听器将被忽略。您可以发布manifest.json文件吗?我在html中重述了错误并更正了它,但它仍然不起作用。我不知道我做错了什么。请尝试将清单中使用的代码从
http://*/
更改为
http://*/*
,因为这可能是问题所在。这需要在
内容\u脚本
权限
属性中更改。我可以假设popup.html中的代码包装在
元素中吗?最后,您是否在弹出或后台页面控制台中看到任何错误或异常?我终于让它工作了。我删除了background.html,替换了