繁体   English   中英

帧之间的通信

[英]Communication between frames

我试图简化我的问题,我认为它不会比这更简单:

<html>
<frameset rows = "50%,50%" name="proof">
<frame src="one.html" name="one">
<frame src="two.html" name="two">
</frameset>
</html>

<html>
<body>
<H1>Frame 1</H1>
</body>
</html>

<html>
<body>
<H1>Frame 2</H1>
</body>
</html>

这是我在加载框架集时看到的:

[https://ibb.co/LSMpgZF]

如果我以这种方式使用“Frame 2”编辑文件:

<html>
<body>
<H1>Frame 2</H1>
<script>
alert (top.two.name);
</script>
</body>
</html>

我重新加载框架集,我看到了这个:

https://ibb.co/Qkkhp69

到目前为止,一切都按预期工作。 但是,如果我以其他方式使用“Frame 2”编辑文件:

<html>
<body>
<H1>Frame 2</H1>
<script>
alert (top.one.name);
</script>
</body>
</html>

尽管已经完全按照 Internet 上的每个人的建议进行操作,但没有出现警报。 另一个框架也是如此:它可以显示自己的名称,但不能显示其他(或框架集)的名称。

这是为什么? 两个框架如何通信?

好的,我自己解决了这个问题。

我尝试了许多变体,最重要的是我将两个警报放在同一个 html 文件中。 我注意到只有当它是第一个时才正确执行显示其自己名称的警报。 所以我猜想在另一个警报的某个地方有一个 JS 错误,确实有一个 - 我最终在 Firefox 控制台中找到了错误。 正如我所怀疑的那样,这是由浏览器安全设置引起的,并且可以在其他线程中找到一些好的解决方案: 禁用 firefox 同源策略

这对我来说非常有效(因为我使用的是 Firefox):在 Firefox 68 之后,我需要调整 'privacy.file_unique_origin' -> false(通过打开 'about:config')来解决新 CORS 的“CORS 请求不是 HTTP” -引入了原点规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM