如何使用浏览器返回功能关闭图层?

我正在打开一个完整的页面层,以便在单击按钮时进行过滤。可以通过按钮关闭它,但有些确实使用浏览器的导航功能,然后加载最后一页而不是打开它的页面。


为了解决这个问题,我看到有两种方法。一种带有哈希值,一种带有浏览器状态。


浏览器状态不会在后退按钮上为我关闭图层,只是更改了 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();

} );

使用多层时,如何支持浏览器返回功能?


Smart猫小萌
浏览 152回答 1
1回答

跃然一笑

您可以创建一个函数来检查散列,然后使用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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript