重新加载另一个iframe后,我在调用特定iframe的函数时遇到了一些问题.它适用于所有主流浏览器,但在Microsoft Edge上表现得有些奇怪.您将需要以下星座来获取错误.所有文件都在同一服务器上的同一目录中.我没有设置任何内容安全策略.
如果你加载Frame1.html一切都会好的,你会收到"警告"消息.
但是如果单击frame4.html上的"Click me"a-tag,将重新加载frame2.html,您将收到"权限被拒绝"错误,因为var tmpParent = parent;无法访问父对象().如果再次单击a-tag,它将无任何错误地工作.
我认为这是一个Edge bug,因为所有其他浏览器都可以处理它,它只在第一次点击时发生.
如果您使用父母的顶部输入,也会发生错误.
topFrame.js的代码用于查找我网站的最顶层框架.我不能简单地使用top,因为它应该可以嵌入我的网站.
有人有线索吗?
非常感谢!
Frame1.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 1</title>
<script type="text/javascript">
var topFrame = this;
function myAlert() {
alert('alert');
}
</script>
</head>
<body>
<iframe id="overallContentWrapper" name="mainFrame" src="frame2.html" frameborder="0"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Frame2.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 2</title>
<script src="topFrame.js" type="text/javascript"></script>
<script type="text/javascript">
window.addEventListener("load", function load(event) {
window.removeEventListener("load", load, false);
try {
topFrame.myAlert();
} catch (e) {
alert(e);
}
}, false);
</script>
</head>
<body>
<iframe name="subFrame" src="frame3.html" …Run Code Online (Sandbox Code Playgroud)