使用jQuery或纯 JavaScript 如何将用户从一页转到另一页?
当前回答
<script type="text/javascript">
var url = "https://yourdomain.com";
// IE8 and lower fix
if (navigator.userAgent.match(/MSIE\s(?!9.0)/))
{
var referLink = document.createElement("a");
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
// All other browsers
else { window.location.replace(url); }
</script>
其他回答
基本上jj 查询只是一个JavaScript 贾斯克里普特和做一些诸如转向在此情况下, 您可以使用纯 JavaScript, 这样您就有三个选择, 使用 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 函数, 您也可以在 jQuery 中写入一个函数来处理它, 但由于它只是一行纯 JavaScript 函数, 您也可以使用所有上面没有窗口的函数, 如果您已经进入窗口范围, 例如window.location.replace("http://stackoverflow.com");
可以是location.replace("http://stackoverflow.com");
我还在下面的图像上展示了所有这些照片:
使用 jQuery 函数 :
$.extend({
redirectPost: function(location, args) {
var form = '';
$.each(args, function(key, value) {
form += '<input type="hidden" name="' + key + '" value="' + value + '">';
});
$('<form action="' + location + '" method="POST">' + form + '</form>').appendTo($(document.body)).submit();
}
});
在你的代码中,你使用它这样:
$.redirectPost("addPhotos.php", {pimreference: $("#pimreference").val(), tag: $("#tag").val()});
JavaScript 为您提供了许多获取和更改当前在浏览器地址栏中显示的 URL 的方法。 所有这些方法都使用位置对象, 这是窗口对象的属性。 您可以创建一个新的位置对象, 其当前 URL 如下 。
var currentLocation = window.location;
URL 基本结构
<protocol>//<hostname>:<port>/<pathname><search><hash>
协议 -- 指定协议名称用于访问互联网上的资源。 (HTTP(没有 SSL)或HTPS(没有 SSL))
主机名 -- -- 主机名指定拥有资源的主机名。例如,www.stackoverflow.com。一个服务器使用主机名提供服务。
端口 -- -- 用于识别因特网或其他网络电文到达服务器时要发送到的具体过程的端口号。
路径 - 路径为网络客户端想要访问的主机内的具体资源提供信息。 例如, stackoverflow. com/ index.html 。
查询 -- -- 查询字符串跟随路径组件,并提供一个资源可用于某种目的的信息字符串(例如,作为搜索的参数或作为要处理的数据)。
hash - URL 的锁定部分, 包括 hash 符号 (#) 。
使用这些位置对象属性,您可以访问所有这些 URL 组件
- 散数- 发送或返回 URL 的锁定部分。
- 主机主机- 发送或返回 URL 主机名和端口。
- 主机名- 发送或返回 URL 主机名。
- 小时( href)- 设置或返回整个 URL 。
- 路径名- set 或返回 URL 的路径名。
- 端口端口- set 或返回服务器用于 URL 的端口号。
- 议定书议定书- 发送或返回 URL 的协议。
- 搜索搜索- set 或返回 URL 的查询部分
如果您现在想要更改页面或将用户重定向到其他页面, 您可以使用该页面href
像这样的位置对象的属性
您可以使用位置对象的 href 属性。
window.location.href = "http://www.stackoverflow.com";
位置对象还有这三种方法
- (指定)- 装入新文档。
- 重新装入()- 重新装入当前文档。
- (替换)-- -- 将当前文档替换为新文档
您可以使用指派 () 并替换将重定向到其它页面的方法
location.assign("http://www.stackoverflow.com");
location.replace("http://www.stackoverflow.com");
转让 () 和替换 () 如何不同- 替换() 方法与指定() 方法() 之间的差别是,替换() 从文档历史中删除当前文档的 URL, 意思是无法使用“ 回溯” 按钮返回原始文档。所以,如果您想要装入新文档,则使用指定() 方法, 并想要给此选项返回原始文档 。
您可以使用jj 查询像这样
$(location).attr('href',url);
这样你就可以把用户 转到其他的URL上。
jj 用于重定向页面或 URL 的查询代码
第一路
这是用于重定向页面的 jQuery 代码 。 既然, 我已经把这个代码放在$( document). ready () 函数上, 一旦页面加载, 它将会立即执行 。
var url = "http://stackoverflow.com";
$(location).attr('href',url);
您甚至可以直接将一个 URL 直接传送到attr()方法,而不是使用变量。
第二路
window.location.href="http://stackoverflow.com";
您也可以使用这样的代码(两者在内部相同):
window.location="http://stackoverflow.com";
如果您对窗口. 位置和window.location.href
,然后你可以看到后一个设置href
明确表明财产,而前者默示地这样做。window.location
返回一个对象,该对象默认设置它.href
财产。
第三路
使用 JavaScript (JavaScript)replace()
方法方法的计算方法的计算方法window.location
对象。您可以将新的 URL 传送到replace()
方法, 它将模拟 HTTP 重定向。 顺便说一下, 记住window.location.replace()
方法不会在会话历史中放置原始页面, 这可能影响到后按钮的行为。 有时, 它会是你想要的, 所以要小心使用它 。
// Doesn't put originating page in history
window.location.replace("http://stackoverflow.com");
第四路
缩略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);
在我开始之前, jQuery 是用于 DOM 操作的 JavaScript 库。 所以您不应该使用 jQuery 重定向页面 。
Jquery.com的一段引文:
虽然jQuery在旧浏览器版本中可能运行没有大问题,但我们并不积极测试jQuery在其中的位置,而且通常不修补其中可能出现的错误。
发现于此:https://jquery.com/browser-support/
所以jQuery并不是一个终极和万能的解决方案 解决逆向兼容性。
以下使用原始 JavaScript 的解决方案在所有浏览器中都起作用, 并且已经相当长的时间达到了标准, 所以您不需要任何库来支持交叉浏览器 。
此页面将重定向到谷歌谷歌3000毫秒后
<!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/" />
METTA 地点
<meta http-equiv="location" content="URL=http://evil.example" />
BASE 劫持
<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>
如果您将两个页面示例合并在一起, 你会有一个新生的路线改变循环, 这将保证您的用户将永远不再想要使用您的网站 。
推荐文章
- 使用jQuery改变输入字段的类型
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用jQuery以像素为整数填充或边距值
- 检查是否选择了jQuery选项,如果没有选择默认值
- Next.js React应用中没有定义Window
- 如何重置笑话模拟函数调用计数之前,每次测试
- 如何强制一个功能React组件渲染?
- 在javascript中从平面数组构建树数组
- 将Dropzone.js与其他字段集成到现有的HTML表单中
- 如何在AngularJS中观察路由变化?
- JavaScript DOM删除元素
- 将dd-mm-yyyy字符串转换为日期
- Javascript复选框onChange
- Javascript函数前导bang !语法
- 如何在页面上遍历所有DOM元素?