sit*_*guy 7 javascript google-chrome-extension chrome-extension-manifest-v3
我\xe2\x80\x99m 使用 Manifest V3 编写 Chrome 扩展,并试图找到一种动态执行代码字符串的方法(类似于用户脚本)。有执行代码字符串的方法(eval、setTimeout、new Function 等);然而,它们在 Manifest V3 中似乎被禁止。虽然 setTimeout 仍然有效,但 Chrome 团队表示,提交到 Chrome Web Store 后将不再接受执行代码字符串。提交时,代码需要成为扩展的一部分。在下面的链接中\xe2\x80\x9cRemotely Hosted Code\xe2\x80\x9d 下也有说明:
\nhttps://developer.chrome.com/docs/extensions/mv3/intro/mv3-migration/
\n看到了一些关于这个问题的论坛帖子和错误,但它们似乎都已经过时,没有明确的答案。与上面的链接一样,较早的帖子指出将不再可能执行代码字符串。较新但仍然过时的 (2020) 帖子指出,Manifest V3 将具有可以动态注册用户脚本的用例(例如 TamperMonkey),但只能在向用户提供提示后进行注册。我看到的唯一两种让扩展程序动态运行脚本的方法是 \xe2\x80\x9cchrome.scripting.registerContentScripts\xe2\x80\x9d 和 \xe2\x80\x9cchrome.scripting.executeScript\xe2\x80\x9d。两种方法都从文件执行代码,而不是字符串。旧方法 \xe2\x80\x9cchrome.tabs.executeScript\xe2\x80\x9d 用于允许执行代码字符串,但现在已弃用。
\nChrome Web Store 是否有允许的方式或对此问题的任何更新?
\n编辑1:
\n如果从文件动态执行脚本是唯一的方法:
\n编辑2:
\n重新措辞 2(在编辑 1 下)。
\n编辑3:
\n感谢所有回复的人。\xe2\x80\x99t 似乎没有解决这个问题的方法。我还没有听到或读到过关于如何(如果可能的话)脚本代码字符串可以动态执行(Chrome Web Store 不会拒绝)的公开声明。
\n自 2021 年 11 月 13 日起,您可以执行以下操作之一:
\n感谢大家。
\n小智 1
在沙箱中,可以执行代码串。
https://developer.chrome.com/docs/extensions/mv3/manifest/sandbox/
沙箱代码有一些限制,例如它不能访问 DOM。这取决于您想通过代码字符串执行什么操作。