onhashchange イベント (新しいブラウザー用) と Ben Alman による hashchange プラグイン (古いブラウザー用) の組み合わせを使用して、ajax 呼び出しまたはアクションを実行しながら履歴を追跡するアプリケーションがあります。すべてのブラウザーでチャームのように機能し、戻るボタンと進むボタンを使用すると、ユーザーはハッシュを変更して記録されるアクションをナビゲートできます。ここまでは順調ですね。これで、ページは差分ドメイン (クロス ドメイン) のクライアント ページの iframe でホストされます。Chrome は機能しますが、履歴に多くの変更を加えると、ある時点で機能しなくなります (それは我慢できます)。IEはまったく機能しません。リンクをクリックしてハッシュを更新してアプリケーションをナビゲートすると、親ページに新しい履歴アイテムが作成されますが、戻るボタンを押すと、ネストされたページのハッシュは更新されないため、hashchange イベントは発生しません。以前にこの問題を解決した人はいますか? どうもありがとう
ハッシュ変更イベント処理を初期化する
if ("onhashchange" in window && !($j.browser.msie && $j.browser.version == '7.0')) {
window.onhashchange = function() {
var params = parseHash(location.hash)
if (params.tabId) {
if (getSelectedTabId() == params.tabId) return;
reloadPage(params.tabId);
}
};
}
else {// Plugin for older browsers
$j(window).bind('hashchange', function() {
var params = parseHash(location.hash)
if (params.tabId) {
if (getSelectedTabId() == params.tabId) return;
reloadPage(params.tabId);
}
});
}