关于我的背景和刚刚创建的窗口之间的通信,几天后我遇到了问题。
我的代码:
的manifest.json
"web_accessible_resources": ["window_script.js", "background.js"],
background.js
//**Create the new tab**
var results = window.open('','_blank');
//**Insert button inside the new tab**
var button = results.document.createElement("button");
button.setAttribute("id","Button_Recalculer");
button.innerHTML = "Calculer";
results.document.body.appendChild(button);
//Insert in this new tab the script named "window_script"
var script = results.document.createElement("script");
script.src = chrome.extension.getURL('window_script.js');
(results.document.head || results.document.documentElement).appendChild(script);
//Listen the message comes from outside the chrome extension
chrome.runtime.onMessageExternal.addListener(function(msg, sender, sendResponse) {
if(msg.text === 'From_Web')
{
console.log("its works");
}
});
window_script.js
var Recalcul = document.getElementById('Button_Recalculer');
Recalcul.addEventListener('click', function() {
console.log("Before msg sended");
var url = "jocipeeapnnenbinklbhajdognaaaaaaaaa";
chrome.runtime.sendMessage(url,{text:'From_Web'});
console.log("Msg sended");
});
在 window_script 的控制台内,我看到了console.log"在msg发送之前"和console.log" msg发送"。但是在 background 的控制台内,我没有看到console.log"它的作品和#34;,就像这样没有收到消息,而它被罚款了 window_script ;你有什么想法吗?我已经阅读了有关交叉消息的主题,尝试过,但没有找到解决方案
谢谢
杰里米
答案 0 :(得分:0)
background.js似乎没问题,但是当您从Chrome扩展程序发送邮件时出现问题。
基于这篇文章:https://developer.chrome.com/apps/messaging
"从扩展程序向内容脚本发送请求看起来非常相似,只是您需要指定要将其发送到哪个选项卡。此示例演示如何向选定选项卡中的内容脚本发送消息。"
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
我希望这会有所帮助, 福克