gpt4 book ai didi

javascript - 如何使用文件协议(protocol)在 Chrome/Webkit 中从一帧调用 JavaScript 函数到另一帧

转载 作者:行者123 更新时间:2023-11-28 00:29:56 24 4
gpt4 key购买 nike

我开发了一个应用程序,在一个框架中有一个项目列表;当一个人点击一个项目时,它会在另一个框架中做一些事情(加载图像)。

这过去在所有浏览器中都能正常工作,包括 Chrome 3;现在它在 Firefox 中仍然可以正常工作,但在最新版本的 Chrome 中(我相信从 4 开始)它会抛出此错误:

Unsafe JavaScript attempt to access frame with URL (...) from frame with URL (...). Domains, protocols and ports must match.

这显然是一项安全“功能”,但是否有可能绕过它?

这是一个简单的测试:

index.html:

<html>
<frameset cols="50%,50%">
<frame src="left.html" name="left"/>
<frame src="right.html" name="right"/>
</frameset>
</html>

左.html:

<html>
<body>
<a href="javascript:parent.right.test('hello');">click me</a>
</body>
</html>

right.html:

<html>
<body>
<script>
function test(msg) {
alert(msg);
}
</script>
</body>
</html>

以上在 Firefox 3.6 和 Chrome 3 中有效,但在 Chrome 5 中会抛出上述错误...

编辑:

  • 将@cols 属性添加到框架集元素
  • 事实上,当且仅当页面使用 http 协议(protocol)(并且来自同一域)提供时,它在 Chrome 中才有效,但我的问题是当页面是本地页面并从 file://协议(protocol)提供 .然后它适用于 Firefox(所有版本)和 Chrome 3,但不适用于 Chrome 5(我没有 Chrome 4,所以我不确定该特定版本(并且不知道是否可以下载特定的 Chrome 版本?)——但对于 Chrome 5,我非常确定它不起作用)。

最佳答案

查看密切相关问题的答案:Call a JavaScript function defined in an iframe in Chrome using the file protocol .

简而言之,使用 --allow-file-access-from-files 启动 Chrome 可以“解决”问题,因为不会报告错误。

当然,由于您是在 CD 上分发文件,因此您不太可能将其视为实际解决方案。我推荐主演Chromium bug 47416鼓励 Chromium 的开发人员使 Chrome 更符合 Gecko 的行为。

关于javascript - 如何使用文件协议(protocol)在 Chrome/Webkit 中从一帧调用 JavaScript 函数到另一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2570718/

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