我如何重定向到另一个网页?
如何使用 jQuery 或纯 JavaScript 将用户从一个页面重定向到另一个页面?
不能简单地使用 jQuery 进行重定向
jQuery 不是必需的,并且
window.location.replace(...)
最能模拟 HTTP 重定向。
window.location.replace(...)
比使用
window.location.href
更好,因为
replace()
不会将原始页面保留在会话历史记录中,这意味着用户不会陷入永无止境的后退按钮困境。
如果您想模拟某人点击链接,请使用
location.href
如果您想模拟 HTTP 重定向,请使用
location.replace
对于例如:
// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");
// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";
警告: 此答案仅作为一种可能的解决方案提供;它显然 不是 最佳解决方案,因为它需要 jQuery。相反,最好使用纯 JavaScript 解决方案。
$(location).prop('href', 'http://stackoverflow.com')
标准的“原始”JavaScript 页面重定向方式
window.location.href = 'newPage.html';
或者更简单:(因为
window
是全局的)
location.href = 'newPage.html';
If you are here because you are losing HTTP_REFERER when redirecting, keep reading:
(Otherwise ignore this last part)
以下部分适用于那些使用
HTTP_REFERER
作为众多安全措施之一(尽管它不是一种很好的保护措施)的人。如果您使用的是
Internet Explorer 8
或更低版本,则在使用任何形式的 JavaScript 页面重定向(location.href 等)时,这些变量都会丢失。
下面我们将为
IE8 及更低版本
实现一种替代方案,这样我们就不会丢失 HTTP_REFERER。否则,您几乎总是可以简单地使用
window.location.href
。
针对
HTTP_REFERER
进行测试(URL 粘贴、会话等)
可以
帮助判断请求是否合法。
(
注意:
也有方法可以解决/欺骗这些引荐来源,如评论中 droop 的链接所述)
简单的跨浏览器测试解决方案(Internet Explorer 9+ 和所有其他浏览器回退到 window.location.href)
用法:
redirect('anotherpage.aspx');
function redirect (url) {
var ua = navigator.userAgent.toLowerCase(),
isIE = ua.indexOf('msie') !== -1,
version = parseInt(ua.substr(4, 2), 10);
// Internet Explorer 8 and lower
if (isIE && version < 9) {
var link = document.createElement('a');
link.href = url;
document.body.appendChild(link);
link.click();
}
// All other browsers can use the standard window.location.href (they don't lose HTTP_REFERER like Internet Explorer 8 & lower does)
else {
window.location.href = url;
}
}