问题描述:
这个问题的答案是社区的努力。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。
如何使用 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开始!