Rey*_*yno 4 google-chrome-extension
尝试将扩展从清单版本1移植到版本2时,会出现:
端口错误:无法建立连接.接收端不存在.chromeHidden.Port.dispatchOnDisconnect miscellaneous_bindings:232
这在开发人员工具的Console中出现.我不知道从哪里开始修复这个原因我不知道是什么导致它开始..
什么可以导致这个问题?并且有什么方法可以确切知道是什么导致了它?谢谢.
Rob*_*b W 10
失败的最可能的原因是激活默认的内容安全策略时"manifest_version": 2是有效的.默认CSP的结果是不会执行内联JavaScript.
<script>chrome.extension.onConnect.addListener(...);</script>
Run Code Online (Sandbox Code Playgroud)
上一行是内联代码的示例.解决方案是将脚本放在外部JS文件中:
<script src="script.js"><!--original contents moved to script.js--></script>
Run Code Online (Sandbox Code Playgroud)
当你使用背景的网页,就不能使用:
"background_page": "background.htm", 要么 "background": {"page": "background.htm"},"background": {"scripts": ["background.js"]}background.js包含最初放置在<script>标签中的脚本background.htm.浏览器操作弹出窗口,应用程序启动器,选项页面等通常包含内联事件侦听器.通过CSP,这些也是被禁止的.
<button onclick="test();"> 不起作用.解决方案是使用外部JS文件添加事件addEventListener.有关示例,请查看文档或此答案.
eval,Function,setTimeout,...)是被禁止的.重写您的代码以不从字符串创建代码,或使用沙箱清单选项(在Chrome 21中引入).自Chrome 22以来,unsafe-evalCSP政策可用于解除此限制.JSONP不起作用,因为外部(JavaScript)资源无法在扩展的上下文中加载.使用普通XMLHttpRequest代替JSONP(更多信息+示例).
唯一的例外是当资源是通过httpshttp获取时.可以调整CSP以引入此异常 - 请参阅文档:
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
Run Code Online (Sandbox Code Playgroud)官方文档还提供了有关该主题的出色解释,请参阅"教程:迁移到Manifest V2".
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |