2012-03-30 9 views
2

IE9の閲覧履歴にiframeページが挿入されていると、多くの問題が発生しています。これは前のページに戻るために数回クリックする必要があるため、痛みです。これの原因は何ですか?ブラウザやページのバグですか?IEの閲覧履歴にIframeページが挿入されないようにする方法

編集: JavaScriptを使用して、ページ上のすべてのiframeのソースを更新して、wmode = transparent属性を追加していることに気付きました。

$('iframe').each(function() { 
    var url = $(this).attr("src") 
    $(this).attr("src", url + "?wmode=transparent"); 
}); 

これは、YouTube動画の背後にある戦闘メニューナビゲーションに追加されました。 IEがこれらのイベントを履歴に挿入しないようにする方法はありますか?

答えて

6

行うオプションはインラインフレームを置き換えるのではなく、ソースを更新するだろう。

$('iframe').each(function() { 
    var url = $(this).attr("src") 
    //$(this).attr("src", url + "?wmode=transparent"); 

    url = url + "?wmode=transparent"; 

    var frm = document.createElement("iframe"); 
    frm.src = url; 
    //copy attributes of this -> frm 
    $(this).replaceWith(frm); 
}); 

履歴エントリは、それがDOMに挿入された後のiframeのsrc属性が変更されるたびに行われます。 iframeのコンテンツ(サードパーティのiframe)を管理していない場合、ページの場所を変更すると履歴エントリが作成されます。

1

私はすべてのサーキットスについてはわかりませんが、finance.yahoo.comではFacebookのlike.phへのリンクがバックボタン履歴に挿入されることがあります。ページ上のスクリプトによって発生します。 FacebookのリンクがWebページに表示されたときに起こります。これにより、戻るボタンの履歴にリンクを作成する機能が起動されます。ユーザーはこれを発生させるために何かをクリックする必要はありません。

0

代わり

$(this).attr("src", url + "?wmode=transparent"); 

$(this).get(0).contentWindow.location.replace(url + "wmode=transparent"); 
+1

iframeのコンテンツが親と同じドメインからのものである場合にのみ有効です。 –

+0

@JoeEnzmingerあなたは正しいです。同じドメイン、ポート、プロトコル。しかし、同じ起源の政策問題の修正があります – YardenST

関連する問題