![](/img/trans.png)
[英]How to use history.pushState in conjunction with back functionality of the browser
[英]How to use browser back functionality to close a layer?
我正在打開一個完整的頁面層,以便在單擊按鈕時進行過濾。 可以通過按鈕關閉它,但有些確實使用瀏覽器的導航功能,然后加載最后一頁而不是打開它的頁面。
為了解決這個問題,我看到有兩種方法。 一種帶有哈希值,一種帶有瀏覽器狀態。
瀏覽器狀態不會在后退按鈕上為我關閉圖層,只是更改了 URL,所以我正在嘗試哈希選項。
雖然它有效,但問題是我確實有多個層可以調用例如搜索層。
// show/hide filter layer
var filter_layer_toggle = function() {
// window.history.pushState('page2', 'Title', '/page2.php');
$("#btn_save_search").toggle()
// more happening here
}
//this needs to be called on another event
var search_layer_toggle = function() {
// toggles search layer elements
}
$("#filter_button, #btn_fltr").on("click", function(){
window.location.hash = "filter";
});
document.location.hash = '';
$( window ).on( 'hashchange', function( e ) {
filter_layer_toggle();
} );
使用多層時,如何支持瀏覽器返回功能?
例如,您可以創建一個函數來檢查散列,然后使用switch
切換適當的層。
然后在load
和hashchange
事件上調用該函數。
你會有類似的東西:
function parseHash() {
switch(window.location.hash) {
case '#filter':
filter_layer_toggle();
break;
case '#search':
search_layer_toggle();
break;
default:
// proceed with the not layered page
}
}
在hashchange
事件上你調用parseHash()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.