Flash(またはAJAX)のブラウザー履歴
-
06-07-2019 - |
質問
Flash(またはAJAX)Webサイトのブラウザ履歴を有効にするための最良のツール/プラクティスは何ですか? 確立された慣行は、URLへのハッシュ追加を設定して読み取ることです
http://example.com/#id=1
Flex History Managerについては知っていますが、考慮すべき代替案があるかどうか疑問に思っていました。また、一般的なAJAXソリューションまたはベストプラクティスにも関心があります。
解決
いくつかの小さなものに swfadress を使用しました。
他のヒント
SWFAddress は広く使用され、テストされています。 Flashでディープリンクを処理することは(前もって計画していれば)ほとんど些細なことです。 JSとASライブラリを提供します。これらのライブラリは連携して動作し、プロセス全体を非常に簡単にします。 AJAXのRSHのようなものを見たいと思うでしょう。
AJAXの場合、 Really Simple History などが優れています。
これは少し回り道に見えるかもしれませんが、私は現在、そのためにdojoフレームワークを使用しています。私のUIがほとんどJS / HTMLだったときに非常に便利だったdojo.backがあります。パワー、滑らかなアニメーション、ブラウザの安定性を高めるためにフレックスを行ったので、引き続き使用する必要があるのはバックURLだけです。
FlexBuilderは、デフォルトのプロジェクトで独自のブラウザ履歴を持っているようです。
また、Flex 3クックブックには、mx.managers.HistoryManagerを使用して独自のカスタム履歴管理を作成するためのレシピがあります。いつかこれを試してdojo.backへの依存を解消する計画がありますが、まだ時間がありません。
このように非常にシンプルな独自のソリューションを展開しました:
(function() {
var oldHash, newHash;
function checkHash() {
// Grab the hash
newHash = document.location.hash;
// Check to see if it changed
if (oldHash != newHash) {
// Trigger a custom event if it changed,
// passing the old and new values as
// metadata on the event.
$(document).trigger('hash.changed', {
old: oldHash,
new: newHash
});
// Update the oldHash for the next check
oldHash = newHash;
}
}
// Poll the hash every 10 milliseconds.
// You might need to alter this time based
// on performance
window.setInterval(checkHash, 10);
})(jQuery);
次に、「hash.changed」イベントのイベントハンドラーを使用して、新しい値が何であるかに応じて応答する必要があります。このアプローチは非常にシンプルなケースで機能します。