我如何重定向到另一个网页?
- 2024-11-02 21:00:00
- admin 原创
- 61
问题描述:
如何使用 jQuery 或纯 JavaScript 将用户从一个页面重定向到另一个页面?
解决方案 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("https://stackoverflow.com");
// similar behavior as clicking on a link
window.location.href = "https://stackoverflow.com";
解决方案 2:
警告:此答案仅作为一种可能的解决方案提供;它显然不是最佳解决方案,因为它需要 jQuery。相反,最好使用纯 JavaScript 解决方案。
$(location).prop('href', 'http://stackoverflow.com')
解决方案 3:
重定向页面的标准“原始” JavaScript 方法
window.location.href = 'newPage.html';
或者更简单地说:(因为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;
}
}
解决方案 4:
有很多方法可以做到这一点。
// 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:
这适用于每个浏览器:
window.location.href = 'your_url';
解决方案 6:
如果您能更详细地描述一下您要做的事情,那会更有帮助。如果您要生成分页数据,则有一些方法可供选择。您可以为想要直接访问的每个页面生成单独的链接。
<a href='/path-to-page?page=1' class='pager-link'>1</a>
<a href='/path-to-page?page=2' class='pager-link'>2</a>
<span class='pager-link current-page'>3</a>
...
请注意,示例中的当前页面在代码和 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:
我也认为这location.replace(URL)
是最好的方法,但如果您想通知搜索引擎有关您的重定向(他们不会分析 JavaScript 代码来查看重定向),您应该将rel="canonical"
元标记添加到您的网站。
添加一个带有 HTML 刷新元标记的 noscript 部分也是一个很好的解决方案。我建议您使用此JavaScript 重定向工具来创建重定向。它还支持 Internet Explorer 传递 HTTP 引用。
示例代码如下:
<!-- Place this snippet right after opening the head tag to make it work properly -->
<!-- This code is licensed under GNU GPL v3 -->
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited -->
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ -->
<!-- REDIRECTING STARTS -->
<link rel="canonical" href="https://yourdomain.example/"/>
<noscript>
<meta http-equiv="refresh" content="0;URL=https://yourdomain.example/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
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
</script>
<!-- Credit goes to http://insider.zone/ -->
<!-- REDIRECTING ENDS -->
解决方案 8:
但如果有人想重定向回主页,那么他可以使用以下代码片段。
window.location = window.location.host
如果您拥有开发、登台和生产三个不同的环境,那将会很有帮助。
您只需将这些词语放入 Chrome 控制台或Firebug控制台中即可探索此窗口或 window.location 对象。
解决方案 9:
JavaScript 为您提供了许多方法来检索和更改浏览器地址栏中显示的当前 URL。所有这些方法都使用 Location 对象,它是 Window 对象的属性。您可以创建一个具有当前 URL 的新 Location 对象,如下所示。
var currentLocation = window.location;
URL 的基本结构
<protocol>//<hostname>:<port>/<pathname><search><hash>
协议——指定用于访问 Internet 上的资源的协议名称。(HTTP(不使用 SSL)或 HTTPS(使用 SSL))
hostname——主机名指定拥有资源的主机。例如,www.stackoverflow.com。服务器使用主机名称提供服务。
端口——用于识别 Internet 或其他网络消息到达服务器时要转发到的特定进程的端口号。
pathname——路径提供 Web 客户端想要访问的主机内特定资源的信息。例如,stackoverflow.com/index.html。
查询——查询字符串跟在路径组件之后,并提供资源可用于某些目的的信息字符串(例如,作为搜索的参数或要处理的数据)。
hash——URL 的锚点部分,包括井号 (#)。
使用这些 Location 对象属性,您可以访问所有这些 URL 组件
hash- 设置或返回 URL 的锚点部分。
host - 设置或返回 URL 的主机名和端口。
hostname - 设置或返回 URL 的主机名。
href— 设置或返回整个 URL。
pathname - 设置或返回 URL 的路径名。
port - 设置或返回服务器用于 URL 的端口号。
协议 - 设置或返回 URL 的协议。
search - 设置或返回 URL 的查询部分
现在,如果您想更改页面或将用户重定向到其他页面,您可以href
像这样使用 Location 对象的属性
您可以使用 Location 对象的 href 属性。
window.location.href = "http://www.stackoverflow.com";
Location 对象也有这三种方法
assign() ——加载一个新文档。
reload() ——重新加载当前文档。
replace() ——用新文档替换当前文档
您还可以使用assign()和replace方法重定向到其他类似的页面
location.assign("http://www.stackoverflow.com");
location.replace("http://www.stackoverflow.com");
赋值 () 和替换 () 有何不同-- 替换 () 方法和赋值 () 方法之间的区别在于,替换 () 会从文档历史记录中删除当前文档的 URL,这意味着无法使用“后退”按钮导航回原始文档。因此,如果您想加载新文档,并希望提供导航回原始文档的选项,请使用赋值 () 方法。
您也可以使用jQuery更改位置对象 href 属性,如下所示
$(location).attr('href',url);
因此您可以将用户重定向到其他 URL。
解决方案 10:
基本上,jQuery只是一个JavaScript框架,而对于本例中的重定向等操作,您只需使用纯 JavaScript 即可,因此在这种情况下,使用原始 JavaScript 您有 3 个选项:
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");
我也在下图中展示了它们:
解决方案 11:
应该只需使用 即可设置window.location
。
例子:
window.location = "https://stackoverflow.com/";
以下是关于该主题的一篇过去文章:如何重定向到另一个网页?
解决方案 12:
首先,jQuery 是一个用于 DOM 操作的 JavaScript 库。因此,您不应该使用 jQuery 进行页面重定向。
来自 Jquery.com 的一段引言:
尽管 jQuery 在旧版浏览器上运行时可能不会出现重大问题,但我们不会在这些浏览器上主动测试 jQuery,并且通常不会修复其中可能出现的错误。
它是在这里找到的:https:
//jquery.com/browser-support/
所以 jQuery 并不是实现向后兼容的终极解决方案。
以下使用原始 JavaScript 的解决方案适用于所有浏览器,并且已经成为长期标准,因此您不需要任何库来支持跨浏览器。
此页面将在 3000 毫秒后重定向至Google
<!DOCTYPE html>
<html>
<head>
<title>example</title>
</head>
<body>
<p>You will be redirected to google shortly.</p>
<script>
setTimeout(function(){
window.location.href="http://www.google.com"; // The URL that will be redirected too.
}, 3000); // The bigger the number the longer the delay.
</script>
</body>
</html>
不同的选项如下:
window.location.href="url"; // Simulates normal navigation to a new page
window.location.replace("url"); // Removes current URL from history and replaces it with a new URL
window.location.assign("url"); // Adds new URL to the history stack and redirects to the new URL
window.history.back(); // Simulates a back button click
window.history.go(-1); // Simulates a back button click
window.history.back(-1); // Simulates a back button click
window.navigate("page.html"); // Same as window.location="url"
使用替换时,后退按钮不会返回到重定向页面,就好像它从未出现在历史记录中一样。如果您希望用户能够返回到重定向页面,请使用window.location.href
或window.location.assign
。如果您确实使用了允许用户返回重定向页面的选项,请记住当您进入重定向页面时它会将您重定向回来。因此,在为重定向选择选项时请考虑到这一点。在页面仅在用户执行操作时重定向的情况下,将页面保留在后退按钮历史记录中是可以的。但如果页面自动重定向,那么您应该使用替换,以便用户可以使用后退按钮,而不必被迫返回到重定向发送的页面。
您还可以使用元数据来运行页面重定向,如下所示。
META刷新
<meta http-equiv="refresh" content="0;url=http://evil.example/" />
META 位置
<meta http-equiv="location" content="URL=http://evil.example" />
基地劫持
<base href="http://evil.example/" />
此页面上还有更多方法可以将毫无戒心的客户重定向到他们可能不想访问的页面(其中没有一个方法依赖于 jQuery):
https://code.google.com/p/html5security/wiki/RedirectionMethods
我还想指出,人们不喜欢被随机重定向。只有在绝对需要时才重定向人们。如果你开始随机重定向人们,他们将永远不会再访问你的网站。
下一段是假设的:
您还可能会被举报为恶意网站。如果发生这种情况,那么当人们点击您网站的链接时,用户浏览器可能会警告他们您的网站是恶意的。还可能发生的情况是,如果人们报告您的网站体验不佳,搜索引擎可能会开始降低您的评级。
请查看有关重定向的 Google 网站站长指南:
https://support.google.com/webmasters/answer/2721217? hl=en&ref_topic=6001971
这是一个有趣的小页面,它会将您踢出该页面。
<!DOCTYPE html>
<html>
<head>
<title>Go Away</title>
</head>
<body>
<h1>Go Away</h1>
<script>
setTimeout(function(){
window.history.back();
}, 3000);
</script>
</body>
</html>
如果将这两个页面示例结合在一起,您将会得到一个重新路由的初始循环,这将确保您的用户永远不会再使用您的网站。
解决方案 13:
var url = 'asdf.html';
window.location.href = url;
解决方案 14:
不使用 jQuery 也可以这样做:
window.location = "http://yourdomain.com";
如果你只想要 jQuery,那么你可以这样做:
$jq(window).attr("location","http://yourdomain.com");
解决方案 15:
这适用于 jQuery:
$(window).attr("location", "http://google.fr");
解决方案 16:
# 使用 jQuery/JavaScript 方法进行 HTML 页面重定向
尝试这个示例代码:
function YourJavaScriptFunction()
{
var i = $('#login').val();
if (i == 'login')
window.location = "Login.php";
else
window.location = "Logout.php";
}
如果您想提供一个完整的 URL 作为window.location = "www.google.co.in";
。
解决方案 17:
原始问题: “如何使用 jQuery 重定向?”,因此答案实现 jQuery >> 免费使用案例。
只需使用 JavaScript 重定向到页面即可:
window.location.href = "/contact/";
或者如果你需要延迟:
setTimeout(function () {
window.location.href = "/contact/";
}, 2000); // Time in milliseconds
jQuery 可让您轻松地从网页中选择元素。您可以在页面上找到所需的任何内容,然后使用 jQuery 添加特殊效果、响应用户操作或显示和隐藏所选元素内部或外部的内容。所有这些任务都始于了解如何选择元素或事件。
$('a,img').on('click',function(e){
e.preventDefault();
$(this).animate({
opacity: 0 //Put some CSS animation here
}, 500);
setTimeout(function(){
// OK, finished jQuery staff, let's go redirect
window.location.href = "/contact/";
},500);
});
假设有人写了一个包含 10,000 行代码的脚本/插件。使用 jQuery,您只需一两行代码即可连接到此代码。
解决方案 18:
所以,问题是如何制作重定向页面,而不是如何重定向到网站?
您只需要使用 JavaScript 即可。以下是一些可创建动态重定向页面的小代码。
<script>
var url = window.location.search.split('url=')[1]; // Get the URL after ?url=
if( url ) window.location.replace(url);
</script>
所以说,您只需将此代码片段放入redirect/index.html
您网站上的文件中,您就可以像这样使用它。
http://www.mywebsite.com/redirect?url=http://stackoverflow.com
如果您访问该链接,它将自动重定向到stackoverflow.com。
文档链接
这就是使用 JavaScript创建简单重定向页面的方法
编辑:
还有一件事需要注意。我添加了window.location.replace
代码,因为我认为它适合重定向页面,但是,您必须知道,当window.location.replace
您使用并重定向时,当您按下浏览器中的后退按钮时,它不会返回到重定向页面,它会返回到之前的页面,看看这个小演示。
例子:
流程:商店主页=>重定向页面至 google => google
在谷歌时:谷歌=>浏览器中的后退按钮=>商店主页
所以,如果这符合你的需要,那么一切都应该没问题。如果你想在浏览器历史记录中包含重定向页面,请替换此
if( url ) window.location.replace(url);
和
if( url ) window.location.href = url;
解决方案 19:
您需要在您的代码中添加此行:
$(location).attr("href","http://stackoverflow.com");
如果你没有 jQuery,请使用 JavaScript:
window.location.replace("http://stackoverflow.com");
window.location.href("http://stackoverflow.com");
解决方案 20:
在您的点击功能上,只需添加:
window.location.href = "The URL where you want to redirect";
$('#id').click(function(){
window.location.href = "http://www.google.com";
});
解决方案 21:
尝试一下:
location.assign("http://www.google.com");
示例的代码片段。
解决方案 22:
不需要 jQuery。你可以这样做:
window.open("URL","_self","","")
就这么简单!
发起 HTTP 请求的最佳方式是使用document.loacation.href.replace('URL')
。
解决方案 23:
JavaScript 非常广泛。如果你想跳转到另一个页面,你有三个选择。
window.location.href='otherpage.com';
window.location.assign('otherpage.com');
//and...
window.location.replace('otherpage.com');
当您想要移动到另一个页面时,如果这是您的要求,您可以使用其中任何一个。
但是所有三个选项都限于不同的情况。根据您的要求明智地选择。
如果您对该概念的更多知识感兴趣,可以进一步了解。
window.location.href; // Returns the href (URL) of the current page
window.location.hostname; // Returns the domain name of the web host
window.location.pathname; // Returns the path and filename of the current page
window.location.protocol; // Returns the web protocol used (http: or https:)
window.location.assign; // Loads a new document
window.location.replace; // Replace the current location with new one.
解决方案 24:
使用 JavaScript:
方法 1:
window.location.href="http://google.com";
方法 2:
window.location.replace("http://google.com");
使用 jQuery:
方法 1:$(location)
$(location).attr('href', 'http://google.com');
方法 2:可重用函数
jQuery.fn.redirectTo = function(url){
window.location.href = url;
}
jQuery(window).redirectTo("http://google.com");
解决方案 25:
首先要正确书写。你想在一个应用程序内导航到另一个链接,从你的应用程序导航到另一个链接。以下是代码:
window.location.href = "http://www.google.com";
如果您想在应用程序内浏览页面,那么我也有代码,如果您愿意的话。
解决方案 26:
您可以像这样在 jQuery 中重定向:
$(location).attr('href', 'http://yourPage.com/');
解决方案 27:
第一种方式
这是用于重定向页面的 jQuery 代码。由于我已将此代码放在 $(document).ready() 函数中,因此它将在页面加载后立即执行。
var url = "http://stackoverflow.com";
$(location).attr('href',url);
运行代码片段Hide results展开片段
您甚至可以将 URL 直接传递给attr()方法,而不是使用变量。
第二种方式
window.location.href="http://stackoverflow.com";
您也可以像这样编码(两者内部相同):
window.location="http://stackoverflow.com";
如果您对 window.location 和 之间的区别感到好奇window.location.href
,那么您会发现后者是href
显式设置属性,而前者是隐式设置属性。 Sincewindow.location
返回一个对象,默认情况下会设置其.href
属性。
第三条道路
还有另一种使用 JavaScript 重定向页面的方法,即对象replace()
方法window.location
。您可以将新的 URL 传递给该replace()
方法,它将模拟 HTTP 重定向。顺便说一句,请记住该window.location.replace()
方法不会将原始页面放入会话历史记录中,这可能会影响后退按钮的行为。有时,这就是您想要的,所以请谨慎使用它。
// Doesn't put originating page in history
window.location.replace("http://stackoverflow.com");
运行代码片段Hide results展开片段
第四条道路
该location.assign()
方法在浏览器窗口中加载一个新文档。
window.location.assign("http://stackoverflow.com");
assign()
和方法的区别replace()
在于,该location.replace()
方法会从文档历史记录中删除当前 URL,因此无法导航回原始文档。在这种情况下,您无法使用浏览器的“后退”按钮。如果您想避免这种情况,则应使用location.assign()
方法,因为它会在浏览器中加载新的文档。
第五条道路
类似attr()方法(jQuery 1.6 之后引入)
var url = "http://stackoverflow.com";
$(location).prop('href', url);
运行代码片段Hide results展开片段
解决方案 28:
在 JavaScript 和 jQuery 中,我们可以使用以下代码将一个页面重定向到另一个页面:
window.location.href="http://google.com";
window.location.replace("page1.html");
解决方案 29:
ECMAScript 6 + jQuery,85 字节
$({jQueryCode:(url)=>location.replace(url)}).attr("jQueryCode")("http://example.com")
请不要杀我,这是个笑话。这是个笑话。这是个笑话。
这确实“为问题提供了答案”,从某种意义上说,它要求“使用 jQuery”提供解决方案,在这种情况下,需要以某种方式将其强制纳入等式。
Ferrybig 显然需要解释一下这个笑话(仍然是在开玩笑,我相信评论表上的选项有限),所以事不宜迟:
attr()
其他答案不必要地在location
或对象上使用 jQuery window
。
这个答案也滥用了它,但方式更可笑。它不是用它来设置位置,而是用它attr()
来检索设置位置的函数。
jQueryCode
尽管该函数与 jQuery 没有任何关系,但它还是被命名了,而调用该函数somethingCode
简直太糟糕了,尤其是当它甚至不是语言的时候。
“85 字节”指的是代码高尔夫。打高尔夫显然不是代码高尔夫之外应该做的事,而且这个答案显然不是真正的高尔夫。
基本上,畏缩。
解决方案 30:
JavaScript的:
window.location.href='www.your_url.com';
window.top.location.href='www.your_url.com';
window.location.replace('www.your_url.com');
JQuery的:
var url='www.your_url.com';
$(location).attr('href',url);
$(location).prop('href',url);//instead of location you can use window
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件