如何在 chrome 扩展程序 MV 3 中加载沙盒 .html

How to load Sandbox.html in chrome extension MV 3

提问人:blueseal 提问时间:10/5/2023 最后编辑:blueseal 更新时间:10/5/2023 访问量:53

问:

我在内容脚本中有一个 react 应用程序,它通过 Shadow 根附加到 DOM。它使用清单版本 3。

我想在内容脚本中呈现,但 chrome 阻止它显示。我想使用沙盒 .html 运行媒体编码器逻辑以绕过 csp 警告。 这是错误消息:sandbox.htmlenter image description here

content script

const MySandboxIframe = () => {
  return (
    <div>
      <div className="testR" id="theFrame">
        <iframe
          id="theFrame"
          src={chrome.runtime.getURL('sandbox.html')} //sandbox.html in public folder, It has a script loaded sandbox.js file
          style={{
            width: '100%',
            height: '100px',
          }}
          sandbox="allow-scripts"
        ></iframe>
      </div>
    </div>
  );
};

sandbox.html in public folder

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="sandbox.js"></script>
  </head>
  <body>
    <p>This is hidden inside a hidden sandboxed iframe.</p>
  </body>
</html>

sandbox.js in public folder

window.addEventListener('load', () => {
  console.log('=============> sandbox.js');
});

manifest.json v3

...
  "sandbox": {
    "pages": ["sandbox.html"]
  }
...

如何在不被浏览器阻止的情况下渲染 iframe?有什么想法吗?

javascript reactjs dom iframe google-chrome-extension

评论

0赞 wOxxOm 10/5/2023
目前尚不清楚您为什么要在manifest.json中使用。要公开内容,请使用web_accessible_resourcessandbox
0赞 blueseal 10/5/2023
我想在沙盒中运行javascript kinda ffmpeg
0赞 wOxxOm 10/5/2023
如果 ffmpeg 是 JS,则可以在没有沙盒的情况下运行它,否则需要修改 CSP 以允许 COEP 标头。无论如何,在网页中使用 web_accessible_resources 作为 iframe 的 html,然后如有必要,您可以在其中添加另一个沙盒 iframe。
0赞 blueseal 10/5/2023
我尝试从 渲染html,但chrome仍然阻止它。我检查了错误消息,它有一个class=“neterror”。顺便说一句,Chrome Manifest v3 不允许在扩展中,因此建议使用 Sandboxweb_accessible_resourceseval
1赞 wOxxOm 10/5/2023
周围应该有例子,我没有任何链接。外部 iframe 在 web_accessible_resources 中定义,并添加到网页中。此 iframe 在内部创建另一个 iframe,该 iframe 在 中定义。此内部 iframe 可以使用 eval 或外部代码。要进行通信,您将通过 iframeElem.contentWindow.postMessage 使用标准的 Web 跨帧通信。sandbox

答: 暂无答案