Javascript pop状态无法正常工作

Javascript pop状态无法正常工作,javascript,jquery,Javascript,Jquery,我有一些图像,当我单击某个特定图像时,url会更改为该id。但问题是我只能返回一次(而不是每次按“后退”按钮时重复相同的url),而前进按钮根本不起作用。知道我做错了什么吗 <img id="1" src=""> <img id="2" src=""> <img id="3" src=""> 为什么要在onpopstate上调用update(photo\u id)?您的update函数调用window.history.pushstate 这意味着当您按下“后

我有一些图像,当我单击某个特定图像时,url会更改为该id。但问题是
我只能返回一次
(而不是每次按“后退”按钮时重复相同的url),而
前进按钮根本不起作用。知道我做错了什么吗

<img id="1" src="">
<img id="2" src="">
<img id="3" src="">

为什么要在
onpopstate
上调用
update(photo\u id)
?您的
update
函数调用
window.history.pushstate

这意味着当您按下“后退”按钮时,您正在将该URL推回历史堆栈。这就是为什么你一次又一次地得到相同的URL

例如:

  • 访问您的页面
    /mysite/
  • 单击图1,将url更改为
    /mysite/1
  • 图像1的推送状态
  • 单击图2,将url更改为
    /mysite/2
  • 图像2的推送状态
  • 按Back,将url更改为
    /mysite/1
  • 此处出现图像1的推送状态
  • 按Back,URL保持在
    /mysite/1
  • 根据您打算执行的操作,您可能只需从
    onpopstate
    中删除
    update(photo\u id)
    。我用下面的修复程序对此进行了测试,结果成功了。我能够在Chrome上正确地来回移动

    window.onpopstate = function(event) {
        var photo_id= document.location.href.split('/').slice(-1)[0];
    
        //Remove this line: update(photo_id);   
    }
    

    不要将图像url数据存储到窗口的历史对象中。它不是为这个设计的。更改浏览器的ui体验不是一个好的做法。用户希望他的历史记录按钮能按设计工作。谢谢,这是一个愚蠢的错误,非常感谢。
    window.onpopstate = function(event) {
        var photo_id= document.location.href.split('/').slice(-1)[0];
    
        //Remove this line: update(photo_id);   
    }