別のiframeを再読み込みした後に特定のiframeの関数を呼び出すときに問題が発生します。すべての主要なブラウザで動作しますが、Microsoft Edgeではちょっと変わった動作をします。エラーを表示するには、次の星座が必要です。すべてのファイルは、同じサーバー上の同じディレクトリにあります。私はコンテンツセキュリティポリシーを設定していません。親iframeにアクセスすると、Microsoft Edgeで「権限が拒否されました」が返される
Frame1.htmlをロードすると、すべて正常に機能し、「警告」メッセージが表示されます。
frame4.htmlで「Click me」タグをクリックすると、frame2.htmlが再ロードされ、親オブジェクト(var tmpParent = parent;
)にアクセスできないため、「アクセス権が拒否されました」というエラーが表示されます。 aタグをもう一度クリックすると、エラーなしで動作します。
他のすべてのブラウザで処理できるため、最初のクリックでのみ発生するため、エッジバグだと思います。
親のトップインストゥルメントを使用するとエラーが発生します。
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>
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" frameborder="0"></iframe>
</body>
</html>
Frame3.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 3</title>
</head>
<body>
<iframe name="subsubFrame" src="frame4.html" frameborder="0"></iframe>
</body>
</html>
Frame4.html
<!DOCTYPE html>
<html>
<head>
<title>Frame 4</title>
</head>
<body>
<a href="frame2.html" target="mainFrame">Click me</a>
</body>
</html>
topFrame.js
おそらくこれは:-(しかしTHXそれを修正しないSAMEORIGINに – mplungjan
設定X-フレームオプションをhttps://davidwalsh.name/iframe-permission-denied。gollum1007 @ – gollum1007
は、あなたが他の更新プログラム?これを解決するために管理しました –