【发布时间】:2021-12-01 12:06:16
【问题描述】:
我在理解 chrome.runtime.sendmessage 如何将数据从我的 Content.js 文件发送到我的 chrome.runtime.onMessage Background.js 文件的语法时遇到了一些问题。我正在尝试注入一个脚本来查看网页指标并在导航到新页面时在 Chrome 扩展弹出窗口中显示它们。我无法看到从我的 content.js 脚本发送到我的 background.js 脚本的变量。我不需要在会话之间缓存数据,只希望我的脚本在用户所在的当前选项卡中运行。
我的 Content.js 脚本应该使用 Manifest.js 中的 "run_at": "document_idle" 执行。
Content.js 运行 > setBadgeAction 在 Background.js 的图标上显示指标 > 用户可以在扩展程序 Popup
中打开报告Background.js:
chrome.runtime.onMessage.addListener((request, sender, sendResponse){
chrome.browserAction.setBadgeText({
text: request.apple,
tabId: sender.tab.id
});
chrome.browserAction.setPopup({
tabId: sender.tab.id,
popup: "popup.html"
});
});
content.js:
function webFunction(){
var apple = 0;
var orange = 3;
var kiwi = 5;
var banana = 13;
chrome.runtime.sendMessage({
apple: apple,
orange: orange,
kiwi: kiwi,
banana: banana,
});
}
popup.js
chrome.tabs.query({
active: true,
currentWindow: true
});
chrome.runtime.onMessage.addListener((request,sender) =>{
document.getElementById("appleTag").innerHTML = request.apple;
document.getElementById("orangeTag").innerHTML = request.orange;
document.getElementById("kiwiTag").innerHTML = request.kiwi;
document.getElementById("bananaTag").innerHTML = request.banana;
});
popup.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="popup.css">
<script src="popup.js"></script>
</head>
<body>
<p id ="appleTag">Apple Score</p>
<p id ="orangeTag">Orange Score</p>
<p id ="kiwiTag">Kiwi Score</p>
<p id ="bananaTag">Banana Score</p>
</body>
</html>
manifest.js
{
"name": "",
"description": "",
"version": "1.0",
"manifest_version": 3,
"action":{
"default_popup": "popup.html",
"default_icon": {
"16": "/images/16.png",
"32": "/images/32.png",
"48": "/images/48.png",
"128": "/images/128.png"
}
},
"content_scripts": [
{
"matches": [
"*://*/*"
],
"run_at": "document_idle",
"js": [
"content.js"
]
}
],
"options_page": "popup.html",
"background": {
"service_worker": "background.js"
},
// Permissions for the Extension.
"permissions": [
"storage",
"activeTab"
],
"icons": {
"16": "/images/16.png",
"32": "/images/32.png",
"48": "/images/48.png",
"128": "/images/128.png"
}
}
【问题讨论】:
标签: javascript html google-chrome google-chrome-extension firefox-addon-webextensions