0

各画面のページをリロードせずに、onhashchangeJavaScript イベントを使用して一連の「画面」をユーザーに表示しています。このページを iFrame 内に配置すると、hashchange イベントが IE9 によって起動されず、window.location.href が期待どおりに更新されません。

私が期待すること:ユーザーが「続行」をクリックして別の画面に進むたびに、URL のハッシュ部分が変更されます。ブラウザの戻るボタンと進むボタンを使用すると、ブラウザによってハッシュが変更されます。これは、javascript の onhashchange イベント ハンドラーによってキャッチされ、正しいコンテンツが表示されます。

代わりに観察したこと: onhashchange イベント (IE9 を含む) をサポートするすべてのブラウザーでの動作は予想どおりです。ただし、問題のページが iFrame 内に読み込まれると、IE9 では動作が変わります。IE9 でブラウザーの [戻る] ボタンをクリックすると、次のようになります。

  • hashchange イベントは発生しません。
  • window.location.href と window.location.hash は、戻るボタンをクリックする前と同じままです。
  • iFrame を右クリックして iFrame のプロパティを表示すると、変更されたハッシュで URL が表示されます。つまり、プロパティ ウィンドウの URL が wi​​ndow.location.href と一致しません。

おもちゃの例:他の人がこの動作を見ていないと報告しているため、ここにおもちゃの例を作成しました: http://jonemo.de/stuff/ie9iframe/test.html。をクリックしstate1てから をクリックしstate2、ブラウザの戻るボタンをクリックします。Current state of iFrameを読み取る必要がありますstate1が、私の IE9 ではstate2、この一連のアクションの後に読み取ります。私の IE はバージョン 9.0.8112.16421 で、これが通常のリリース バージョンです。

IE9 の iFrame 内のページで戻るボタンの使用を検出するにはどうすればよいですか? iFrame を保持するページと iFrame 内のページは、異なるドメインにある場合があります。iFrame 内のページを完全に制御でき、iFrame を保持するページに任意の Javascript を配置できます。

4

1 に答える 1

0

window.location.href更新は私にとって完全に問題ありません。iframe の外からアクセスしている場合、本当にアクセスしていますiframe.contentWindow.location.hrefか?

于 2011-12-30T20:53:07.057 に答える