[英]How to make forward button work on this example using HTML5 history?
在此示例中,我们设法使后退按钮起作用,但前进按钮似乎是一个问题,当按下前进按钮时, #modal
应该重新出现,但没有出现。 有解决的办法吗?
$(window).bind('popstate', function() { $('#modal').hide(); }); $(".view").click(function() { history.pushState(null, null, null); $("#modal").show(); });
#modal { position: relative; display: none; height: 100px; width: 100px; background-color: grey }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <button class="view">Click</button> <div id="modal"></div>
谢谢!
您可以使用“哈希”代替“历史记录”
$(window).bind('popstate', function() {
if(location.hash.indexOf('#modal') != -1)
$('#modal').show();
else
$('#modal').hide();
});
$(".view").click(function(){
location.hash ='#modal';
$("#modal").show();
});
这是一个演示
通过将所有null
推入历史记录,您不会以任何方式耦合页面的状态/视图。 您是否知道当您沿着堆栈前进时也会触发popstate
事件?
大多数人倾向于使用称为“路由”的相对URL(或片段)来解析历史记录/内容,但您也可以使用pushState
的第一个参数添加数据-大规模管理此机制的方式超出了范围,但一个简单的例子如下:
$(window).bind('popstate', function() {
var state = history.state || {};
state.openModal ? $('#modal').show() : $('#modal').hide();
});
$(".view").click(function(){
$('#modal').show();
history.pushState({ openModal: true });
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.