【发布时间】:2018-08-11 17:42:42
【问题描述】:
我有一个主 html 文件,它通过 iframe 在同一目录中加载另一个 html 文件。主页上有一个按钮,它针对 iframe 中的 html 文件。它正在使用这个功能:
<script>
function myFunction() {
var x = document.getElementsByTagName("iframe")[0].contentWindow;
x.exportRoot.gotoAndPlay(2);
}
</script>
Live 它按预期工作:当我单击按钮时,它会从 iframe 内启动 Animate CC 动画。但是,当我在本地查看文件时,我在控制台窗口中收到此错误消息:
SecurityError(DOM 异常 18):阻止原点为“null”的帧访问原点为“null”的帧。协议、域和端口必须匹配。
我读过这与同源政策有关。如果主页与 iframe 页面位于另一个域中,这将是有意义的。但是两个html文件都在本地同一目录中。
我的浏览器(尝试过 Safari 和 Chrome)仍然将其视为两个不同的域?有什么我可以改变的让它在本地也能工作吗?
【问题讨论】:
-
本地的意思是协议是
file:///?如果是这样的话,本地加载的文件在同源策略中更加严格 -
我建议你发布你的
<iframe>标签。 -
我正在使用的确实是 file:///。所以我可以在上线之前测试 html 文件。那么在本地测试时有什么方法可以绕过同源策略吗?
-
你能用火狐吗?它没有 Safari 那样严格。见codeproject.com/Questions/1195078/…。或者使用本地网络服务器。
-
@jiggy1965 直到 / 的域必须完全相同。
标签: javascript html