window.location.href,window.location.replace和window.location.assign之间的区别

有什么区别

  1. window.location.href="http://example.com";
  2. window.location.replace("http://example.com");
  3. window.location.assign("http://example.com");

我在很多论坛上看到, window.location.assign()只是取代当前会话历史,因此浏览器的后退button将不起作用。 但是,我无法重现这一点。

 function fnSetVariable() { //window.location.href = "http://example.com"; window.location.replace("http://example.com"); //window.location.assign("http://example.com"); } <a onmouseover="fnSetVariable();" href="PageCachingByParam.aspx?id=12" > CLICK </a> 

这些做同样的事情:

 window.location.assign(url); window.location = url; window.location.href = url; 

他们只是导航到新的url。 另一方面, replace方法导航到URL而不向历史添加新的logging。

所以,你用这种forms阅读的内容是不正确的。 assign方法确实为历史logging添加了新的logging。

参考: http : //developer.mozilla.org/en/window.location

关于不能使用后退button的部分是一个常见的误解。 window.location.replace(URL)从页面历史logging列表中抛出最上面的 ONE条目,通过用新条目覆盖它,所以用户不能轻易地返回到那个特定的网页。 该function不会清除整个页面历史logging列表,也不会使后退button完全无法使用。

(没有function,也没有我知道的参数组合可以改变或覆盖历史列表条目, 并不拥有绝对的 – 浏览器通常会推动这种安全限制,通过简单地甚至没有定义任何可能影响任何其他操作在页面历史logging列表中排名第一,我不寒而栗,想到如果存在这样的function,恶意软件可能会做些什么卑鄙的事情。

如果你真的想使后退button不起作用(可能不是“用户友好”:再想一想,如果这真的是你想要做的),“打开”一个全新的窗口。 (你可以“打开”一个甚至没有 “返回”button的popup窗口,但popup窗口不是很受欢迎:-)如果你想保持你的页面显示,不pipe用户做什么再次“用户友好”是有问题的),build立一个window.onunload处理程序,只是从一开始就重新装载你的页面从头开始每一次。