2016-08-16 130 views
-1

我正在做一个网站吨行,当你连续按下我隐藏其余的人。要再次显示所有人,您必须再次按下,但客户可能需要按浏览器/手机的后退按钮。在后退按钮触发事件

我正在寻找的方式JS或jQuery的是:

如果行是隐藏的,按后退按钮做一些事情(再次显示所有行),如果没有进行正常的返回按钮的funcionality。

有什么想法?

在此先感谢。

+0

@Tyler它不是一个不好的做法,完全可能,这是大多数前端框架(AngularJS,ReactJS等)路由器的工作原理 – Mistic

回答

0

您需要使用历史记录API。

使用history.pushState()在单击某行时创建新状态。

注册一个回调到window.onpopstate修改用户点击后退按钮时的行为(您可以取消event并做你的东西)。

例(未经测试,jQuery的可选):

$('.row').on('click', function() { 
 
    // do your stuff 
 
    
 
    window.pushState({rowId: rowId}); // you might need the additional parameters, particularly to change the URL 
 
}); 
 

 
$(window).on('popstate', function(event) { 
 
    if ('rowId' in event.state) { 
 
    // do your stuff 
 
    
 
    event.preventDefault(); 
 
    } 
 
});

更多信息:
https://developer.mozilla.org/en-US/docs/Web/API/History_API
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate

+0

真的很有帮助,我没有使用pushState函数,而是使用了代码的第二部分。如果我只显示一行的类名,我正在控制。如果我找到.row.open这意味着我只显示一行,所以我必须显示其余的行,如果不是不取消事件。 –

1
try this 


function detectBrowser() 
    { 
    window.onpopstate = function(event) 
    { 
    alert('helloindia'); 
    }; 
    } 
    detectBrowser(); 
相关问题