よく知られているように、XHR(別名AJAX)ウェブアプリケーションでは、あなたのアプリの履歴はビルドされていません。また、リフレッシュボタンをクリックすると、ユーザは現在の活動から外れることがよくあります。私はlocation.hash(例えばhttp://anywhere/index.html#somehashvalue
)を見つけて、リフレッシュの問題を回避しました(現在の状態をアプリに知らせるためにlocation.hashを使用し、ページロードハンドラを使用してその状態をリセットします)。本当に素敵でシンプルです。location.hashをXHRアプリケーションの履歴の解決策として監視していますか?
これは、私のアプリの履歴を追跡するためにlocation.hashを使用することについて考えさせてくれました。私は、彼らはアイフレームなどを使用しているため、だからここに私のニッケルとダイムだ、既存のライブラリを使用したくない:アプリケーションページのロードが、私はこれを起動したとき:
setInterval(
function(){
if (location.hash !== appCache.currentHash) {
appCache.currentHash = location.hash;
appCache.history.push(location.hash);
/* ... [load state using the hash value] ... */
return true;
}
return false;
}, 250
);
を(appCacheは、アプリケーション変数を含む定義済みのオブジェクトであります)アイデアは、アプリケーション内のすべてのアクションをハッシュ値からトリガーすることです。まともなブラウザでは、ハッシュ値の変更によってIE(< = 7)の履歴にエントリが追加されます。すべてのブラウザで、別のハッシュ値を持つページに前後にナビゲートしても、ページが更新されるわけではありません。そこに、インターバルされた機能が引き継がれます。ハッシュ値の変更が検出されるたびに(プログラムで、または前または後ろをクリックして)、アプリは適切な処置をとることができます。アプリケーションはそれ自身の履歴を追跡することができ、アプリケーション(特にIEユーザー)に履歴ボタンを表示することができます。
私が言う通り、これはブラウザを越えて動作し、メモリやプロセッサのリソースに関してはコストがかかりません。だから私の質問です:これは、XHRアプリの歴史を管理するための実行可能なソリューションですか?長所と短所は何ですか?
更新:自分の自作フレームワークを使用しているため、私は既存のフレームワークの1つを使用したくありませんでした。 IEでlocation.hashを使用できるようにするには、あまりにも歴史がありますが、私は単純なスクリプト(iframeが必要です)を作成しました。私はon my siteを公開し、それを使用する/変更する/批判することを自由に感じる。
私はそれについて考えました。おそらく乱雑な歴史はアプリケーション制御の問題でもあります。つまり、ユーザーがアプリのどこにつながるかを確認して、自分の位置が常に明確です。 – KooiInc