2012-03-22 11 views
0

ページを読み込むiFrameを作成するスクリプトがあります。私は物事を明確にするためにJSFiddleを作成:iframeから「戻る」をクリックすると親ウィンドウが変更されます

link JSFiddle loading CNN in a frame

これは、フレーム内のCNNをロードします。新しい記事をクリックしてから「戻る」をクリックすると、SafariとGoogle Chromeの両方で奇妙な動作が起こります。「戻る」をクリックするとiframeを「戻す」ことはできません。親フレーム全体 'back'。これを防ぐ方法を教えてください。

また、これは常に起こるとは限りません。自分で試してみてください。少なくとも5〜10個のリンクをクリックすると、フィドルが毎回それ自体をリセットすることがわかります。それは起こるべきではありません...

これが唯一のSafari専用クローム、オペラとIEで発生するような動作ですが、この問題を持っていないようだとき、あなたと...

+0

私はいくつかのより多くのテストをしましたが、Chromeで新しいウィンドウでフィドルを開け、私はフィドルがリセットされ、articeから「バック」をクリックすることはできませんが、私はCNNのナビゲーションバー上の項目をクリックしたときに、私は「背中」をクリックすることができますCNNのメインページに行く... – patrick

+0

cnnサイトのブラウザの戻るボタンまたは「戻る」リンクをクリックしていますか? – jeremysawesome

+0

ブラウザの「戻る」ボタンをクリックしています – patrick

答えて

0

ブラウザは、履歴イベントを登録します別のURLをクリックすると、iframeはページの一部であるため、そのページはiframe内のクリックを親ページの履歴イベントとして登録します。ブラウザによっては動作が多少異なる場合があります.FFFとChromeはどちらかというとIEの動作が若干異なると予想しています。しかし、あなたの例をテストすると、ChromeとIEは全く同じように動作し、予想通りに動作しました。だから、明確にする

:JSFiddleのロード は限りブラウザが懸念している歴史的な出来事です。 Iframeを作成して読み込むためのボタンをクリックするのは、過去の出来事ではありません。 Iframeウィンドウ内のURLリンクをクリックすると、履歴イベントになります。この時点で

uは、ブラウザが覚えている2つの状態を持っていて、それらの間の歴史の中で前後に行くことができます。

+0

iframeを開くためにボタンをクリックすると、歴史的な出来事ですが、どの記事からでも「リセット」したJSFiddle(「戻る」は親ウィンドウに戻って)から「戻る」をクリックすることはできますが、メニューバーのリンクをクリックして「戻る「CNNサイトの前のページに戻ってきます(あなたが期待するように?)。これはChromeのバグですか? IEはこれと同じ振る舞いを示していません... – patrick

+0

私の意見では、クロムはここで正しいことをしています - 私はie8でそれをテストし、同じように働いたと言いました。それを上書きするには、iframeウィンドウで履歴イベントを聞くことができるかもしれません。https://github.com/balupton/history.js – dbrin

+0

iframeにページを読み込んでリンクをクリックしてから、「戻る」をクリックすると1つのケースに戻るiframeと、他のケースでは(一見ランダムな)親ウィンドウを '戻す'べきですか?それは私には意味がありませんか? – patrick

関連する問題