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

问题描述:

这个问题的答案是社区的努力。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。

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

解决方案1:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

一个不是简单地使用 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";

注意:与 replace() 的 HTTP 重定向类似的行为意味着它不会在浏览器的历史记录中创建条目。

我在 5 年前看到你的回答后创建了这个imgflip.com/i/11ua9c

如果您仅显示页面以进行重定向,则 location.replace() 可能更合适(从历史记录中排除具有重定向的页面)。但是为什么不首先在服务器端进行重定向呢?

如果有人仍然对您应用的所有出色答案但页面重定向无效,请访问:stackoverflow.com/questions/15759020/… 它适用于我的情况。

@x-yuri 我的用例是 URI 片段(在 # 符号之后)不会通过服务器端重定向保留,因为它们没有发送到服务器。

解决方案2:

huntsbot.com – 高效赚钱,自由工作

警告:此答案仅作为一种可能的解决方案提供;这显然不是最好的解决方案,因为它需要 jQuery。相反,更喜欢纯 JavaScript 解决方案。

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

解决方案3:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

重定向页面的标准“香草”JavaScript 方式

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

或更简单地说:(因为窗口是全局的)

location.href = 'newPage.html';

如果您在这里是因为在重定向时丢失了 HTTP_REFERER,请继续阅读:(否则忽略最后一部分)

以下部分适用于使用 HTTP_REFERER 作为许多安全措施之一的人(尽管它不是一个很好的保护措施)。如果您使用 Internet Explorer 8 或更低版本,则在使用任何形式的 JavaScript 页面重定向(location.href 等)时,这些变量会丢失。

下面我们将为 IE8 & 实现一个替代方案。降低,这样我们就不会丢失 HTTP_REFERER。否则,您几乎总是可以简单地使用 window.location.href。

针对 HTTP_REFERER 进行测试(网址粘贴、会话等)可以帮助判断请求是否合法。 (注意:还有一些方法可以解决/欺骗这些引荐来源网址,正如评论中 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; 
    }
}

解决方案4:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

有很多方法可以做到这一点。

// window.location
window.location.replace('http://www.example.com')
window.location.assign('http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/path'

// window.history
window.history.back()
window.history.go(-1)

// window.navigate; ONLY for old versions of Internet Explorer
window.navigate('top.jsp')


// Probably no bueno
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';

// jQuery
$(location).attr('href','http://www.example.com')
$(window).attr('location','http://www.example.com')
$(location).prop('href', 'http://www.example.com')

解决方案5:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

这适用于每个浏览器:

window.location.href = 'your_url';

解决方案6:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

如果您对您正在尝试做的事情更具描述性,那将会有所帮助。如果您尝试生成分页数据,则可以选择一些方法来执行此操作。您可以为希望能够直接访问的每个页面生成单独的链接。

1
2
3
...

请注意,示例中的当前页面在代码和 CSS 中的处理方式不同。

如果您希望通过 AJAX 更改分页数据,这就是 jQuery 的用武之地。您要做的是将单击处理程序添加到对应于不同页面的每个锚标记。此单击处理程序将调用一些 jQuery 代码,该代码通过 AJAX 获取下一页并使用新数据更新表。下面的示例假设您有一个返回新页面数据的 Web 服务。

$(document).ready( function() {
    $('a.pager-link').click( function() {
        var page = $(this).attr('href').split(/\?/)[1];
        $.ajax({
            type: 'POST',
            url: '/path-to-service',
            data: page,
            success: function(content) {
               $('#myTable').html(content);  // replace
            }
        });
        return false; // to stop link
    });
});

解决方案7:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

我也认为 location.replace(URL) 是最好的方法,但如果您想通知搜索引擎您的重定向(他们不会分析 JavaScript 代码来查看重定向),您应该将 rel=“canonical” 元标记添加到您的网站。

添加一个带有 HTML 刷新元标记的 noscript 部分也是一个很好的解决方案。我建议您使用此 JavaScript redirection tool 创建重定向。它还具有 Internet 浏览器支持以传递 HTTP 引荐来源网址。

没有延迟的示例代码如下所示:










    <meta http-equiv="refresh" content="0;URL=https://yourdomain.example/">



    var url = "https://yourdomain.example/";
    if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer
    {
        document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.
        var referLink = document.createElement("a");
        referLink.href = url;
        document.body.appendChild(referLink);
        referLink.click();
    }
    else { window.location.replace(url); } // All other browsers




这不再是真的:搜索引擎不分析 Javascript

这对我来说似乎是最可靠的方法。

解决方案8:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

但是如果有人想重定向回主页,那么他可以使用以下代码段。

window.location = window.location.host

如果您拥有三个不同的环境(开发、登台和生产),那将会很有帮助。

您只需将这些词放在 Chrome 控制台或 Firebug 的控制台中即可探索此 window 或 window.location 对象。

解决方案9:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

JavaScript 为您提供了许多方法来检索和更改显示在浏览器地址栏中的当前 URL。所有这些方法都使用 Location 对象,它是 Window 对象的一个属性。您可以创建一个具有当前 URL 的新 Location 对象,如下所示。

var currentLocation = window.location;

URL的基本结构

//:/

https://i.stack.imgur.com/4kiBE.jpg

协议——指定用于访问 Internet 上的资源的协议名称。 (HTTP(不带 SSL)或 HTTPS(带 SSL))主机名——主机名指定拥有资源的主机。例如,www.stackoverflow.com。服务器使用主机名提供服务。 port – 一个端口号,用于识别 Internet 或其他网络消息到达服务器时要转发到的特定进程。路径名——路径提供有关 Web 客户端想要访问的主机中的特定资源的信息。例如,stackoverflow.com/index.html。查询——查询字符串跟随路径组件,并提供资源可用于某些目的的信息字符串(例如,作为搜索的参数或作为要处理的数据)。 hash – URL 的锚点部分,包括井号 (#)。

使用这些 Location 对象属性,您可以访问所有这些 URL 组件

hash - 设置或返回 URL 的锚点部分。 host - 设置或返回 URL 的主机名和端口。主机名 - 设置或返回 URL 的主机名。 href - 设置或返回整个 URL。 pathname - 设置或返回 URL 的路径名。 port - 设置或返回服务器用于 URL 的端口号。协议 - 设置或返回 URL 的协议。 search - 设置或返回 URL 的查询部分

现在,如果您想更改页面或将用户重定向到其他页面,您可以像这样使用 Location 对象的 href 属性

您可以使用 Location 对象的 href 属性。

window.location.href = "http://www.stackoverflow.com";

Location Object 也有这三个方法

assign() – 加载一个新文档。 reload() – 重新加载当前文档。 replace() – 用新文档替换当前文档

您还可以使用 assign() 和 replace 方法重定向到其他页面,例如这些

location.assign("http://www.stackoverflow.com");

location.replace("http://www.stackoverflow.com");

assign() 和 replace() 有何不同 – replace() 方法和 assign() 方法() 的区别在于 replace() 从文档历史记录中删除当前文档的 URL,意味着不能使用“返回”按钮导航回原始文档。因此,如果您想加载一个新文档,并希望提供导航回原始文档的选项,请使用 assign() 方法。

您也可以像这样使用 jQuery 更改位置对象 href 属性

$(location).attr('href',url);

因此,您可以将用户重定向到其他一些 url。

解决方案10:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

基本上 jQuery 只是一个 JavaScript 框架,在这种情况下,为了做一些事情,比如重定向,你可以只使用纯 JavaScript,所以在这种情况下,你有 3 个使用 vanilla JavaScript 的选项:

1)使用位置替换,这将替换页面的当前历史记录,意味着无法使用返回按钮返回到原始页面。

window.location.replace("http://stackoverflow.com");

2)使用位置分配,这将为您保留历史记录,使用后退按钮,您可以返回原始页面:

window.location.assign("http://stackoverflow.com");

3)我建议使用之前的方法之一,但这可能是使用纯 JavaScript 的第三个选项:

window.location.href="http://stackoverflow.com";

您也可以在 jQuery 中编写一个函数来处理它,但不推荐,因为它只有一行纯 JavaScript 函数,如果您已经在窗口范围内,您也可以在没有窗口的情况下使用上述所有函数,例如 window.location.replace(“http://stackoverflow.com”); 可以是location.replace(“http://stackoverflow.com”);

我也将它们全部显示在下图中:

https://i.stack.imgur.com/ODheM.jpg

解决方案11:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

应该可以使用 window.location 进行设置。

例子:

window.location = "https://stackoverflow.com/";

这是过去有关该主题的帖子:How do I redirect to another webpage?

原文链接:https://www.huntsbot.com/qa/la05/how-do-i-redirect-to-another-webpage?lang=zh_CN

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值