分配给document.location.href而不破坏历史记录

wol*_*iex 10 javascript

在测试document.location.href时,我观察到当用户启动导致javascript分配给document.location.href的操作时,新URL将添加到历史记录中.

但是,如果调用是由javascript启动的,例如,XMLHTTPRequest的状态更改,则会覆盖历史记录中当前页面的条目.我有正确的特征吗?在后一种情况下,有没有办法让页面更改反映在历史记录中?

roy*_*ton 12

我遇到了同样的问题,发现这个解决方法对我有用

代替

function onAjaxCallback(evt){
    location.href=newLocation;
}
Run Code Online (Sandbox Code Playgroud)

我在setTimeout周围包装了location.href调用.似乎可以做到这一点.我的历史现在表现得很好.希望有所帮助

function onAjaxCallback(evt){
    setTimeout(function(){
        location.href=newLocation;
    },0)
}
Run Code Online (Sandbox Code Playgroud)

  • btw在chrome,ff3.5和ie8上测试 (3认同)

Ion*_*tan 7

您可以在不让浏览器显示“返回”按钮的情况下更改位置,如下所示:

window.location.replace(new_url);
Run Code Online (Sandbox Code Playgroud)

但是,原始地址保留在浏览器的历史记录中,可以使用类似CTRL+H

参考: