自动重定向用户到另一个网页的最佳方法是什么?

52

我从未学习过JavaScript,不过我想这是一个相当简单的问题。我只是想知道目前最常建议使用哪种方法。


这个回答解决了你的问题吗?如何重定向到另一个网页? - Heretic Monkey
4个回答

117
// use this to avoid redirects when a user clicks "back" in their browser
window.location.replace('http://somewhereelse.com');

// use this to redirect, a back button call will trigger the redirection again
window.location.href = "http://somewhereelse.com";

// given for completeness, essentially an alias to window.location.href
window.location = "http://somewhereelse.com";

编辑:看起来发表更好答案的用户已经离开了SO,我在这里汇总了他的回答。


32

最好的建议?不要这样做。与JavaScript相比,HTTP更适合此工作(搜索引擎会跟进,您可以说明是否永久,速度更快等)

如果不行…

如果您想要立即重定向:

window.location.replace('http://example.com/');

这将在浏览器历史记录中用新的URI替换当前的URI,因此后退按钮不会使用户陷入立即再次前进的页面。

如果你不想重定向,但想响应事件将用户发送到某个地方:

window.location.href = 'http://example.com/';

记得要提供非JavaScript备选方案。通常来说,链接是最好的选择,但这也要取决于具体情境。

延时重定向更加不可取。唯一使用它们的理由是想向用户展示一条消息,然而用户的阅读速度各不相同(并且他们可能同时在其他标签页中做其他事情)。如果这个消息足够重要以至于需要展示出来,那么就应该让它一直保持在屏幕上直到用户读完并点击了下一页的链接。


5

使用JavaScript重定向页面时,需要记住的一点是,始终提供非JavaScript重定向!可以使用链接,或者更好的是使用<META>标签,例如:<meta http-equiv="refresh" content="2;url=http://example.com">


4
这些天,我认为最被建议的方法是不要使用JavaScript(或meta)重定向。你真的需要它吗?你能使用重定向HTTP头来代替吗?
W3C的Web内容无障碍指南(7.4)也不鼓励创建自动刷新页面,因为大多数Web浏览器不允许用户禁用或控制刷新率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接