最近のブラウザとHTML5では、pushState
ウィンドウで呼び出されるメソッドがありますhistory
。これにより、URLが変更され、ページをロードせずに履歴にプッシュされます。
次のように使用できます。1)状態オブジェクト2)タイトルとURL)の3つのパラメーターを取ります。
window.history.pushState({page: "another"}, "another page", "example.html");
これによりURLが変更されますが、ページは再読み込みされません。また、ページが存在するかどうかはチェックされないため、URLに反応するJavaScriptコードを実行すると、次のように操作できます。
history.replaceState()
新しい履歴を作成する代わりに現在の履歴を変更することを除いて、まったく同じことを行うものもあります!
また、history.pushState
存在するかどうかを確認する関数を作成し、次のように残りを続行できます。
function goTo(page, title, url) {
if ("undefined" !== typeof history.pushState) {
history.pushState({page: page}, title, url);
} else {
window.location.assign(url);
}
}
goTo("another page", "example", 'example.html');
また、を変更し#
て<HTML5 browsers
、ページをリロードしないようにすることもできます。これがAngularが使用する方法ですがハッシュタグに従ってSPAです...
変更#
は非常に簡単です。
window.location.hash = "example";
そして、あなたはこのようにそれを検出することができます:
window.onhashchange = function () {
console.log("#changed", window.location.hash);
}