2015-12-03 10 views
8

別の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

​​
+3

おそらくこれは:-(しかしTHXそれを修正しないSAMEORIGINに – mplungjan

+1

設定X-フレームオプションをhttps://davidwalsh.name/iframe-permission-denied。gollum1007 @ – gollum1007

+1

は、あなたが他の更新プログラム?これを解決するために管理しました –

答えて

0

よく私を知っているIEはあなたを教えしようとしているものを推測しようとしているここの行に私の首を入れてイムしかし、私はことを前提としていますこのタイプの通信を使用することは、iframeが意図していることに逆らっています。

子フレームとパームフレームをやり取りする場合は、代わりにpostMessagesを使用することをお勧めします。私はあなたのスクリプトがXSSクロスサイトスクリプティングに対してブロックされていると思うと思います。親フレームと子フレームの間で何か情報をやり取りしたい場合は、を見ることをお勧めします。