我如何重定向到另一个网页?

如何使用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).attr('href', 'http://stackoverflow.com')

标准的“香草”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粘贴,会话等)进行测试可以有助于判断请求是否合法。 ( 注意:也有解决/欺骗这些推荐人的方法,正如评论中的下垂链接所指出的那样)


简单的跨浏览器测试解决方案(适用于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; 
    }
}
链接地址: http://www.djcxy.com/p/17.html

上一篇: How do I redirect to another webpage?

下一篇: What does the "yield" keyword do?