javascript - executeScript 未定义或不是 ManifestV3 扩展中的函数
问题描述
为什么 Chrome 的这个功能不起作用?我正在尝试这个例子: https ://developer.chrome.com/docs/extensions/mv3/content_scripts/#programmatic 。
我正在为 chrome 开发一个扩展,并从popup.js向 service worker background.js发送一条消息,并在executeScript
.
popup.js
chrome.runtime.sendMessage({ from: "newScript"});
清单.json
{
"manifest_version": 3,
"name": "TennisBet",
"version": "1.0",
"description": "Extrension for bet on tennis.",
"action": {
"default_icon": {
"256": "images/tennis256.png",
"128": "images/tennis128.png",
"64": "images/tennis64.png",
"32": "images/tennis32.png",
"24": "images/tennis24.png",
"16": "images/tennis16.png"
},
"default_popup": "popup/popup.html"
},
"background": {
"service_worker": "background-wrapper.js"
},
"host_permissions": ["*://*/*"],
"permissions": [
"tabs",
"alarms",
"activeTab",
"declarativeContent",
"storage"
]
}
背景.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
switch(request.from){
case "error":
console.log(request.message);
break;
case "checkTabs":
tabsWorker();
break;
case "newScript":
chrome.scripting.executeScript({ // Error in event handler: TypeError: Cannot read property 'executeScript' of undefined
file: "content_scripts/cscript.js"
});
break;
default:
console.log("Message listener status active");
break;
}
});
解决方案
ManifestV3 中的executeScript
方法已更改,现在在chrome.scripting
API 中:
https ://developer.chrome.com/docs/extensions/reference/scripting/
在 manifest.json 中添加这一行:
"permissions": ["scripting"]
背景.js
chrome.scripting.executeScript({
target: {tabId: id, allFrames: true},
files: ['content_scripts/cscript.js'],
});
推荐阅读
- angular - 打字稿:这个函数的主体在哪里定义,泛型真的被使用了吗?
- c++ - 尽管使用了 -I 标志,但没有这样的文件或目录
- python - 如何在 seaborn 联合图中显示边缘直方图的垂直比例?
- sql - 将值的计数限制为每组一个
- java - micronaut 反应式 mongo 设置内部服务器错误
- r - 对于分组的每个名称,如何在数据框中按名称进行匹配和计数?
- vue.js - Webpack + vue-loader + postcss-modules 导致空的 $style 对象
- excel - 如何从 Application.Selection.Areas 中排除最上面的选择?
- reactjs - 根据窗口大小创建响应框
- regex - 如何改进打印范围的正则表达式?