Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onpopstate不工作;当我导航回页面时,不会发生任何事情_Javascript_History_Popstate - Fatal编程技术网

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()
✌️✌️✌️