协慌网

登录 贡献 社区

如何重定向到其他网页?

如何使用 jQuery 或纯 JavaScript 将用户从一个页面重定向到另一个页面?

答案

1
88250
贡献值 216
贡献次数 1

除了 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";
1
88250
贡献值 68
贡献次数 1

注意:此答案仅作为候选的解决方案;它显然不是最好的解决方案,因为它需要 jQuery,纯 JavaScript 解决方案更好。

$(location).attr('href', 'http://stackoverflow.com')

标准的 “vanilla”JavaScript 方式重定向页面:

window.location.href = 'newPage.html';


如果你在这里是因为你在重定向时丢失了 HTTP_REFERER,请继续阅读:


以下部分适用于那些使用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; 
    }
}