javascript中几种页面跳转方式

本文介绍了网页跳转的两种主要方式:通过location对象及其方法实现的跳转。详细解释了使用location.href、location.assign与location.replace的区别,特别是对于浏览器历史记录的影响。

我们把这些方式分为两组


第一组

window.location.assign("http://xy.com");
window.location.href = "http://xy.com";
window.location = "http://xy.com";

在使用②③其实在设置URL的时候自动调用了①方法。我们最常用的是②。

使用该组方式跳转浏览器历史中都会生成一条新记录,因此用户就可以点击后退按钮。


第二组

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

这种方式不会生成新的记录,只是浏览器位置变化,用户不能点击后退按钮。


location对象

location这个BOM对象是特殊的对象,既是window的属性,也是document的属性。

window.locationdocument.location指向同一个对象。

也可以直接写为location.href


注意

还有一个window.navigate(http://www.xy.com)

该方法是针对IE的,不适用于FF,在HTML DOM Window Object中,根本没列出window.navigate方法。

HTML页面跳转方式有多种,以下为你详细介绍: ### HTML标签方式 - **`<meta>`标签**:可实现页面的自动跳转,通过设置`http-equiv="refresh"`和`content`属性,指定跳转时间和目标URL。示例代码如下: ```html <!-- 5秒后自动跳转到Example网站 --> <meta http-equiv="refresh" content="5; url=http://example.com"> ``` - **`<a>`标签**:用户点击超链接后进行页面跳转,使用`href`属性指定目标URL。示例代码如下: ```html <!-- 用户点击后跳转 --> <a href="http://example.com">点击跳转到Example网站</a> ``` ### JavaScript方式 - **`window.location.href`**:直接修改当前窗口的URL并加载新页面,会在浏览器历史记录中生成新记录。示例代码如下: ```javascript // 立即跳转到 Example 网站 window.location.href = "http://example.com"; ``` - **`window.location.replace`**:替换当前历史记录并跳转,不会在浏览器历史记录中生成新的记录。示例代码如下: ```javascript // 替换当前页面跳转到 Example 网站 window.location.replace("http://example.com"); ``` - **`window.history.back()`和`window.history.go()`**:`window.history.back()`可后退到上一个页面,相当于浏览器的后退按钮;`window.history.go()`可根据参数指定跳转的步数,负数表示后退,正数表示前进。示例代码如下: ```javascript // 后退到上一个页面 window.history.back(); // 后退一步,等同于 window.history.back() window.history.go(-1); // 前进一步 window.history.go(1); ``` - **`window.location.reload()`**:用于刷新当前页面,无参数时默认从缓存中加载,传入`true`参数可强制从服务器重新加载。示例代码如下: ```javascript // 从缓存中刷新当前页面 window.location.reload(); // 强制从服务器重新加载当前页面 window.location.reload(true); ``` ### AJAX请求后处理 AJAX请求后,可根据服务器返回的结果进行页面跳转。例如,在AJAX请求成功的回调函数中使用`window.location.href`进行跳转: ```javascript $.ajax({ url: 'your_api_url', method: 'GET', success: function(response) { if (response.status === 'success') { window.location.href = "http://example.com"; } } }); ``` ### 小程序中页面跳转(以微信小程序为例) - **`wx.navigateTo`**:保留当前页面跳转到应用内的某个页面,使用该方法跳转后可通过返回按钮回到原页面。示例代码如下: ```javascript wx.navigateTo({ url: '/pages/newPage/newPage' }); ``` - **`wx.redirectTo`**:关闭当前页面跳转到应用内的某个页面,使用该方法跳转后无法通过返回按钮回到原页面。示例代码如下: ```javascript wx.redirectTo({ url: '/pages/newPage/newPage' }); ``` ### H5与Native交互方式 在H5页面中,可通过特定方式“告诉”Native,由Native执行打开新WebView,并在新WebView中加载页面。这种方式下,跳转的本质是H5与Native进行交互,由Native完成页面的打开操作 [^2]。 ### 页面跳转传递参数 页面跳转时可传递参数,在传参页面将参数序列化后添加到URL中,在接受参数页面进行解析。示例代码如下: ```javascript // 传参页面 let a = { key: 'value' }; // 对参数进行序列化 let astr = JSON.stringify(a); let url = 'https://learn-anything.cn/search?input=' + astr; window.open(url); // 接受参数页面 // window.location 存储了本页面相关所有数据 let query = window.location.search; // 参数解析方式 const urlTemp = require('url'); let parsedUrl = urlTemp.parse(window.location.href, true); let para = parsedUrl.query.input; // 反序列化得到参数 let a = JSON.parse(para); ``` ### 新打开WebView方式 用户点击页面中的元素进行跳转时,可采用新打开WebView的方式。这种方式下,跳转的本质是H5“告诉”Native,由Native执行打开新WebView,并在新WebView中加载页面 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值