Javascript window.onpopstate不工作;当我导航回页面时,不会发生任何事情
我正试图在我的站点上的一个页面上添加Javascript window.onpopstate不工作;当我导航回页面时,不会发生任何事情,javascript,history,popstate,Javascript,History,Popstate,我正试图在我的站点上的一个页面上添加window.onpopstate,但什么也没发生。我将此脚本放在页面上: window.addEventListener('popstate',函数(事件){ if(事件状态){ 警报(事件状态); } },假); 我也尝试过: <script type="text/javascript"> window.onpopstate = function() { alert("popped!"); } </script>
window.onpopstate
,但什么也没发生。我将此脚本放在页面上:
window.addEventListener('popstate',函数(事件){
if(事件状态){
警报(事件状态);
}
},假);
我也尝试过:
<script type="text/javascript">
window.onpopstate = function() {
alert("popped!");
}
</script>
window.onpopstate=函数(){
警报(“砰的一声!”);
}
但是,当我导航回页面时,不会收到任何警报。只有在添加一个或多个历史记录条目,然后用户单击浏览器中的返回按钮时,才会出现
popstate
事件
通过向浏览器历史记录添加条目,可以更改URL(就像用户导航到另一个页面一样),但无需实际加载新页面
使用pushState
方法添加历史记录条目:
history.pushState({}, '', '/newpage');
当您添加一个条目并且用户单击back时,URL会切换回上一个条目,但该地址的页面不会加载。将触发popstate
事件
看
例外情况: 较旧的浏览器不支持
popstate
事件和对浏览器历史记录的操作
某些浏览器(例如Safari)在页面实际加载时也会触发
popstate
事件 假设我在chrome devtools控制台中编写window.addEventListener('popstate',(e)=>console.log(e))
,单击“上一步”按钮后如何查看控制台日志?@AkinHwan popstate仅在您从pushedState移动到以前的状态(或类似的情况)时才会触发。如果您从一个单独的页面导航回第一个页面,它将不会触发。那么您是说,如果我“加载,然后手动输入”加载基本相同的页面,然后单击“上一步”按钮,即使是相同的页面,onpopstate也不会被调用?这是我缺少的部分。我试图用浏览器的后退按钮关闭移动导航,但popstate从未被触发。我所做的是,每当nav被打开时,设置一个本地变量\u navisopeed=true
并推送一个新的历史状态history.pushState(null,null,window.location.pathname)
若要使我保持在同一页上并使用“后退”按钮继续,请在\u navisoped
打开后保持在同一页上并按相同的新历史记录状态,或者使用history.back()
✌️✌️✌️