できるかを検出しアドレスバーを変更JavaScript?
-
20-09-2019 - |
質問
私はAjax重申請る可能性がありますので、ごURLなど
http://example.com/myApp/#page=1
ユーザーが操作、サイトのアドレスバーに切り替えることができようなもの
http://example.com/myApp/#page=5
なの再読み込みます。
私の問題は以下の手順:
- ユーザのブックマークのURL。
- ユーザを操作用などのURLは、現在の状態に固定されます。
- のユーザーがクリックをブックマークの作成手順1です。
- のURLのアドレスバーからの変更点 http://example.com/myApp/#page=5 へ http://example.com/myApp/#page=1, がわからないの方法を検出する変更が起こりました。
がんを検出する変更の一部JavaScriptなのです。
解決
HTML5を使用して、タイマーで彼らのためにポーリングすることなく、URLハッシュ変更の通知を登録することができます。のなhashchange のイベントを紹介します。
これは、すべての主要なブラウザ(Firefoxの3.6、IE8、クロム、その他のWebkitベースのブラウザ)、でサポートされている、それが、私はまだ非常にあなたのためのイベントを処理するライブラリを使用することをお勧めしたい - ブラウザでタイマーを使用することによって、すなわち、 HTML5のイベントをサポートし、そうでない場合は、イベントを使用していない。
イベントの詳細については、 https://developer.mozilla.org/を見ますEN / DOM / window.onhashchange と HTTP :。//msdn.microsoft.com/en-us/library/cc288209%28VS.85%29.aspxする
他のヒント
のsetTimeout /間隔を使用して、定期的に現在のアドレスをチェックします:
var oldLocation = location.href;
setInterval(function() {
if(location.href != oldLocation) {
// do your action
oldLocation = location.href
}
}, 1000); // check every second
あなたがと結合することができるイベントを公開する場所のオブジェクトを拡張する必要があります。
すなわち
window.location.prototype.changed = function(e){};
(function() //create a scope so 'location' is not global
{
var location = window.location.href;
setInterval(function()
{
if(location != window.location.href)
{
location = window.location.href;
window.location.changed(location);
}
}, 1000);
})();
window.location.changed = function(e)
{
console.log(e);//outputs http://newhref.com
//this is fired when the window changes location
}
SWFaddress の物事のこれらのタイプのための優れたライブラリです。
所属していません StackOverflow