gpt4 book ai didi

javascript - 我可以在 iframe 上使用 postMessage,谁的 html 通过 - srcdoc 属性传递?

转载 作者:行者123 更新时间:2023-12-02 22:53:32 26 4
gpt4 key购买 nike

如果我在 srcdoc 属性中传递 html,则无法调用 postMessage

没有 sandbox = "allow-scripts",它给出以下错误

无法在“DOMWindow”上执行“postMessage”:提供的目标源(“https://example.com”)与收件人窗口的源(“https://example.com:444”)不匹配').

<小时/>

sandbox = "allow-scripts",它给出以下错误

无法在“DOMWindow”上执行“postMessage”:提供的目标源(“https://example.com”)与收件人窗口的源(“null”)不匹配。

<小时/>

我想调用没有沙箱属性的postMessage,可以吗?

如果不行,还有其他办法吗?

最佳答案

当然可以。

您的错误消息提示的问题是您确实将 Window.postMessage( message, target-origin, Transferable )target-origin 参数设置为无效值。
您没有显示您的代码,但如果我必须猜测,我会说您根本没有设置它,因此它默认为您当前页面的来源。

由于您的目标框架没有 src 但有 srcdoc 属性,因此其位置将为 about:srcdoc 并且其来源将为为 null,因此 postMessage 的 target-origin"*" 之外的任何其他值都会导致请求失败。
您必须将其设置为“*”

frame.onload = (e) => {
frame.contentWindow.postMessage( 'hello frame', '*' );
};
<iframe id="frame" srcdoc="
<html>
<body>
<pre id='log'></pre>
<script>
const log = document.getElementById( 'log' );
onmessage = (e) => log.textContent = e.data;
</script>
</body>
</html>
"></iframe>

关于javascript - 我可以在 iframe 上使用 postMessage,谁的 html 通过 - srcdoc 属性传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58098237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com