2804
21851
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。
如何使用jQuery或纯JavaScript将用户从一个页面重定向到另一页面? 
1个
2
下一个
一个不只是简单地使用jQuery进行重定向
jQuery是不必要的,并且window.location.replace(...)将最好地模拟HTTP重定向。
window.location.replace(...)优于使用window.location.href,因为replace()不会将原始页面保留在会话历史记录中,这意味着用户将不会陷入永无休止的后台工作中,按钮惨败。
如果要模拟某人单击链接,请使用
location.href
如果要模拟HTTP重定向,请使用location.replace
例如:
//与HTTP重定向类似的行为
window.location.replace(“ http://stackoverflow.com”);
//与点击链接类似的行为
window.location.href =“ http://stackoverflow.com”;
|
警告:仅作为可能的解决方案提供此答案;它显然不是最好的解决方案,因为它需要jQuery。相反,您更喜欢纯JavaScript解决方案。
$ {location).attr('href','http://stackoverflow.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(URL粘贴,会话等)进行测试可以帮助判断请求是否合法。
(注意:还有一些方法可以解决/欺骗这些引荐来源网址,如评论中的下垂链接所示)
简单的跨浏览器测试解决方案(适用于Internet Explorer 9+和所有其他浏览器的window.location.href版本)
用法:redirect('anotherpage.aspx');
函数重定向(url){
var ua = navigator.userAgent.toLowerCase(),
isIE = ua.indexOf('msie')!== -1,
版本= parseInt(ua.substr(4,2),10);
// Internet Explorer 8及更低版本
如果(isIE &&版本<9){
var link = document.createElement('a');
link.href =网址;
document.body.appendChild(link);
link.click();
}
//所有其​​他浏览器都可以使用标准window.location.href(它们不会像Internet Explorer 8或更低版本那样丢失HTTP_REFERER)
其他{
window.location.href = url;
}
}
|
有很多方法可以做到这一点。
// 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 ='/路径'
// window.history
window.history.back()
window.history.go(-1)
// window.navigate;仅适用于旧版本的Internet Explorer
window.navigate('top.jsp')
//可能没有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')
|
这适用于所有浏览器:
window.location.href ='您的网址';
|
如果您对要执行的操作更具描述性,这将有所帮助。如果您尝试生成分页数据,则如何进行分页。您可以为要直接访问的每个页面生成单独的链接。
 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({
输入:“ POST”,
网址:“ /服务路径”,
数据:页面,
成功:功能(内容){
$('#myTable')。html(content); //替换
}
});
返回false; //停止链接
});
});
|
我也认为location.replace(URL)是最好的方法,但是如果您想通知搜索引擎您的重定向(他们不分析JavaScript代码来查看重定向),则应添加rel =“ canonical”元标记到您的网站。
添加一个带有HTML刷新元标记的noscript部分也是一个很好的解决方案。我建议您使用此JavaScript重定向工具来创建重定向。它还具有Internet Explorer支持来传递HTTP Referrer。
没有延迟的示例代码如下所示:
<!-在打开head标签后将其放在正确的位置->
<!-此代码已根据GNU GPL v3许可->
<!-允许您自由复制,分发和使用此代码,但严格禁止删除作者信誉->
<!-由http://insider.zone/tools/client-side-url-redirect-generator/->生成
<!-重新开始->