0

私が持っているこのコードはChrome/FF / safariで動作しますが、IE9では動作しません。IEの何が問題なのかを理解しようとしています。

Domain1.comにはdomain2.comでホストされているiframeがあります-iframeがポップアップ(domain2.comでホストされている)をトリガーし、そのポップアップ上のリンクがa)domain1.comページをdomain2.comのどこかに転送し、b)を閉じます現れる。

私はこの投稿/回答に基づいてこのコードを持っています

1)domain1.com(iframeとイベントを処理するためのIE固有のコードがあります)

  <script type="text/javascript">
    if(navigator.appName == "Microsoft Internet Explorer")          
        window.attachEvent("onmessage", receiveMessage);
    else
        window.addEventListener("message", receiveMessage, false);            

    function receiveMessage(e) {
      if(e.origin == "http://www.domain2.com") //important for security
        if(e.data.indexOf('redirect:') == 0)
          document.location = e.data.substr(9);
    }
  </script>
<iframe src="http://www.domain2.com/iframetest_deleteme.html" width="400" height="150">      
</iframe>

2)domain2.com(iframeのコンテンツ、JSは単なるpoupです)

<script type="text/javascript" >
 jQuery(function($){ 
        $("a[rel*=external]").click(function(){ 
            window.open("http://domain2.com/iframetest_deleteme_popup.html", "", "location=0, menubar=0, resizable=no, toolbar=no, menubar=no, scrollbars=no, width=300, height=100")
            return false; 
        });
 }); 
 </script>
<a href="#" rel="external">open popup from iframe</a>

3)domain2.com(ポップアップのコンテンツ-JSはポップアップの親をリダイレクトする必要があります)

<script type="text/javascript">
 jQuery(function($){ 
        $("a[rel*=external]").click(function(){             
            opener.parent.postMessage('redirect:http://www.google.com', 'http://domain1.com');
            window.close(this);         
            return false; 
        });
 }); 
 </script>

 <p><a href="#" rel="external">javascript link</a></p>

私は長い間これで遊んでいて、IE9がなぜそれで動作しないのか理解できません。

これはライブであり、IE以外のすべてのブラウザでテスト/動作を確認できます: http: //alexhays.com/test/

4

1 に答える 1

1

postmessage が ie8 および ie9 でポップアップ通信に機能しない

http://www.felocity.com/article/window_postmessage_problems_and_workarounds_for_ie8/

于 2013-08-08T12:27:57.700 に答える