0

シナリオ:window.parent.location.href IE9バグ?

  1. domain1.comはdomain2.comのiFrameをホストします。

  2. domain2.comは、親ウィンドウにルーティングするために を必要とする動的リンクをトリガするためにJavaScriptを使用しています。

  3. リンクはすべて相対パスです。

  4. iframe for domain2.comで/linkA.htmlをクリックすると、親が domain1.com/linkA.htmlにルーティングされます。

    var _generic = "/linkA.html";

    絶対(domain2.com/linkA.html)へのリンクを変更
    $("#canvas").each(function() { 
         $(this).children("a").attr("href",_generic); 
         $(this).click(function(e) { 
          e.preventDefault(); 
          window.parent.location.href = _generic; 
         }); 
        }); 
    

は、機能的問題を解決します。

誰もこれまでに遭遇したことはありますか?

答えて

1

相対パスを設定するときにブラウザがURL全体を解決するには、まず現在のhrefを読み込む必要があり、これはSOPによってブロックされます。

しかし、parent.location.hrefの代わりにparent.locationを使用すると、これはうまくいきます。

1

window.parent.locationの代わりにwindow.opener.locationを試してください。

0

私はIE9とIE8、FireFox、Webkitの違いを見てきました。メインページはIE8で動作するようにIE8(またはIE9セットで開かれている場合

<!DOCTYPE html> 
<html> 
<head><title>iframe content</title></head> 
<body> 
    <h1>iframe content</h1> 
    <script>function redirect() { window.parent.location = "/new-href"; } </script> 
    <a href="javascript:redirect()">Redirect the parent window please</a> 
</body> 
</html> 

親ソース:

<!DOCTYPE html> 
<html> 
<head><title>iframe test page</title></head> 
<body> 
    <h1>Parent window</h1> 
    <iframe src="//domain2/iframe.html"></iframe> 
</body> 
</html> 

iframeのソース(別のドメイン上の)次のコードを考えてみましょうモードまたはChrome 23またはFF16)リンクをクリックすると//(iframeドメイン)/ new-hrefに移動し、IE9では//(元の親ドメイン)/ new-href

私はまだ調査中ですどのようにこの問題を回避し、私はより多くの情報を持っている場合/これを更新します。

更新:iframeリンクのtarget = "_ top"属性を設定すると、この問題が回避されます。

(別のドメイン上の)更新のiframeソース:

<!DOCTYPE html> 
<html> 
<head><title>iframe content</title></head> 
<body> 
    <h1>iframe content</h1> 
    <a href="/new-href" target="_top">Redirect the parent window please</a> 
</body> 
</html> 

この更新されたiframeのコード内のリンクは、両方に//(IFRAMEドメイン)/新HREFに親(全体)のウィンドウにリダイレクトされますクリックしますIE8 & IE9(そして、私が知る限り、すべてのブラウザも同様です)。それはあなたがしたいことです、そうですか?

$("iframe a").attr("target", "_top"); 

は、私は、「ウィンドウを試してみましたまたtarget attribute documentation

+0

を参照してください:あなたはiframe内のすべてのタグを作成したい場合は、このようなものを使用どこかにナビゲートし、どこかではなくインラインフレームよりもナビゲートするために、トップ/メイン/親ウィンドウを引き起こします.opener.location "とIE9のコンソールエラーが発生しました(プロパティ 'location'の値を設定できません:オブジェクトはnullまたは未定義です) – iX3