我无法克服这个问题。有人可以给点建议吗?
我有这个使用 ExtJS 库的应用程序,我需要在 Chrome 扩展程序中运行它。我已经成功创建了我的消息传递桥 (
postMessage
),并将整个应用程序沙盒化在其中,一切正常。ExtJS 已加载,应用程序正在运行。然后我有这段逻辑,我需要在我的 ExtJS 视口中预览一段 HTML 片段。我自己创建了一个
iframe
,Panel
然后afterrender
尝试在其中编写代码段。这是我使用的代码:html: '<iframe src="about:blank" style="width:100%;height:100%;border:none;"></iframe>'; ...... //p is the panel found in afterrender p.body.down('iframe').dom.contentDocument.write(content);
然后是错误:
不安全的 JavaScript 尝试使用 URL about:blank 从具有 URL chrome-extension://fcnpmlgapilgclcelfanblpbglmkghbc/core/themes/default/app.html 的框架访问框架。域、协议和端口必须匹配。
我已经尝试这是唯一的方法,并且有效。请看下面我的回答。postMessage
在沙箱中使用这个动态 iframe,但没有任何反应。在清单中设置sandbox
属性也不起作用。
问题:
- 应该如何设置清单以支持这种用例?
- 或者有没有更好的方法来预览 HTML 片段而不使用
iframe
?Afaik 预览iframe
是最好的,因为它将片段沙盒化而不会与父 css 混淆。
笔记
这段代码在 manifest v1 中运行良好,但我计划将其迁移到 manifest v2。我没有意识到内容安全策略 (CSP) 变得如此严格。
一个描述问题的屏幕;)