executeScript 未定义或不是 ManifestV3 扩展中的函数
Posted
技术标签:
【中文标题】executeScript 未定义或不是 ManifestV3 扩展中的函数【英文标题】:executeScript is undefined or not a function in a ManifestV3 extension 【发布时间】:2021-09-05 11:26:36 【问题描述】:为什么 Chrome 的这个功能不起作用?我正在尝试这个例子: https://developer.chrome.com/docs/extensions/mv3/content_scripts/#programmatic.
我正在为 chrome 开发一个扩展,并从 popup.js 向服务人员 background.js 发送消息,并在 executeScript
中收到错误。
popup.js
chrome.runtime.sendMessage( from: "newScript");
manifest.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"
]
background.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;
);
【问题讨论】:
你提供的链接是chrome.scripting
而不是chrome.tabs
。
@wOxxOm 问题是,我已经尝试过“chrome.scripting.executeScript”并得到错误:“事件处理程序中的错误:TypeError:无法读取未定义值的 executeScript 属性”现在我正在编辑这篇文章
嗯,它是一个单独的 API,所以它需要 "scripting"
in "permissions"
in manifest.json。您可以在此文档中报告错误,底部有一个链接。
@wOxxOm 感谢兄弟的支持)
【参考方案1】:
ManifestV3 中的executeScript
方法已更改,现在位于chrome.scripting
API 中:
https://developer.chrome.com/docs/extensions/reference/scripting/
在 manifest.json 中添加这一行:
"permissions": ["scripting"]
background.js
chrome.scripting.executeScript(
target: tabId: id, allFrames: true,
files: ['content_scripts/cscript.js'],
);
【讨论】:
终于!对此给出正确答案的人... fml以上是关于executeScript 未定义或不是 ManifestV3 扩展中的函数的主要内容,如果未能解决你的问题,请参考以下文章
Backbone.js 视图是不是需要 jQuery 或 Zepto? (或者:为啥我会收到“未捕获的类型错误:未定义不是函数”?)
onChange 检查对象的所有属性是不是存在且不是未定义或空字符串
如何解决 Ajax-Zoom 错误:$.axZm 不是有效对象或未定义