我正在尝试创建我的第一个扩展,我想在该扩展中将消息从contentScript发送到popup.js脚本,但是没有收到该消息。
background.js
chrome.runtime.onInstalled.addListener(function() {
chrome.webNavigation.onCompleted.addListener(function() {
chrome.browserAction.setPopup({popup: 'popup.html'});
chrome.tabs.executeScript({
file: 'contentScript.js'
});
}, {url: [{hostSuffix : 'domain.com'}]});
});
contentScript.js(此处尝试将其放在加载脚本之外,但无济于事)
var s = document.createElement('script');
s.src = chrome.extension.getURL('script.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
s.remove();
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
return true;
});
};
popup.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>HI</h1>
<section id='red'></section>
<script src="popup.js"></script>
</body>
</html>
popup.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("HEREEEE");
document.getElementById("red").innerHTML += "Hello";
}
);
清单
{
"name": "new extension",
"version": "1.0",
"description": "Build an Extension!",
"permissions": ["activeTab", "cookies", "sessions", "declarativeContent", "webNavigation", "http://*/*", "https://*/*"],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"icons": {
"16": "images/get_started16.png",
},
"manifest_version": 2,
"web_accessible_resources": [
"script.js"
]
}
background.js正在等待页面完全加载,然后为browserAction执行contentScript和setPopupAction popup.html-存在popup.js的脚本。 contentScript将执行另一个脚本并发送一条消息。 popup.js正在侦听消息,但消息从未到达。你知道为什么吗?是否因为background.js事件?
我的意图是等待某些页面(不能使用pageAction,因为它不允许我添加徽章),然后使用适当的内容更新扩展弹出窗口。