2012-01-14 13 views
4

この回答を検索しましたが見つかりませんでした。バグかどうかはブラウザがこのHTML5関数を悪くサポートしているようです。history.replaceStateを使用してbeforeunloadのURL /状態を変更します。

私はテストするためにchromeとfirefoxしか持っていません。 (最新の安定バージョン)。

$(function(){ 
if (window.history.state != null) $("#content").html(window.history.state.value); 
$(window).bind("beforeunload", function() { window.history.replaceState({ value:"remember me"}, "", document.location.href + "?param=rememberme"); }); 
}); 

ただ試してみてください。 beforeunloadの現在のURLを変更しようとしていたので、データ情報をURLに保存することができます。ユーザーがページに戻ると、変更されたURLを持つページがリロードされます。

しかし、ページリロード時に奇妙に動作します。 最初にクロムで表示されるwindow.history.stateは存在しません(まだサポートされていません)ので、リロード時に状態を取得できません。ページのリロード時には、URLの変更は反映されません。 しかし、別のサイトに行って戻ってくると、URLの変更が再確認されます。

でfirefox window.history.stateが存在し、ページのリロードまたは履歴の前後に、状態が正しくフェッチされます。しかし、URLの変更はページのリロードには機能しません。urlは2回のリロードごとに正しく変更されます。あなたが前進/後退する場合、URLの変更は正しく処理されます。

ページリロード(F5)のためにコードを正しく動作させる方法を知っていて、クロムが実際にはまだhistory.stateをサポートしていない場合は、誰でも知っていますか? ページのリロード時に正しく動作するか、またはブラウザが正しく処理していませんか?

誰でもSafariでテストできれば、そこでどのように動作するのか不思議です。

ただ、そこにコードをテスト:http://www.braikar.com/stuff/test.html

+0

私はFirefoxのたびにうまくいくようですが、Safari、Opera、Chromeの場合は履歴のURLが変更されますが、「私を覚えてください」という内容はdivに追加されません。 IEでは、まったく動作しません。 – ClarkeyBoy

+0

HTML5をメモするのに良いサイトはhttp://html5test.com/です。歴史とはあまり関係ないようですが、ある時点で知る必要のあることがたくさんあります。編集:今度は、2回目の再読み込み時にFirefoxで作業している意味が分かりました。リンクをクリックしたときだけチェックしていました。 – ClarkeyBoy

+0

私はIEで気にしていません。私はそれがうまくいかないと思っていました;)私はかなり前もってCMSシステムを作っています。それが、その歴史の振る舞いが正しいか、まだそれをうまく実装していないブラウザhttps://developer.mozilla.org/en/DOM/Manipulating_the_browser_historyによると、ページのリロード前に状態を変更しているため、ページのリロード時にその動作が正しく動作するはずです。 – Braikar

答えて

0

はあなたの変数を格納するためにクッキーを使用してみましたか? beforeunloadで設定し、読み込み時に読み込むことができます。

関連する問題