navigate和loaction href 和 redirect的用法

本文介绍如何使用window.location.href实现一个框架内的页面在执行服务器端代码后刷新另一个框架内的页面,例如注册成功后自动刷新登录框。同时对比了Response.Redirect与Page.Navigate两种页面跳转方法的区别。

 window.location.href 语句可以实现一个框架的页面在执行服务器端代码后刷新另一个框架的页面
      如:index.htm页面中有二个框架,分别为 frameLeft和frameRight,在frameRight页面中执行服务器端代码后刷新frameLeft中的页面。先前最常见的是注册之后,自动刷新登陆框,让登陆框换成已登陆页面,只要在注册成功的代码之后加上一段,即可以实现刷新另个框架的页面。代码如下:

Response.Write("<script language=javascript>alert('恭喜您,注册成功!')</script>");
Response.Write("<script language=javascript>window.parent.frameLeft.location.href='main.html'</script>");

 

    Response.Redirect - 发送一个 HTTP 响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。使用此方法时,将无法保存所有的内部控件数据,页面 A 跳转到页面 B,页面 B 将无法访问页面 A 中 Form 提交的数据。
 
    Page.Navigate - Page.Navigate 实现的功能和 Response.Redirect 差不多,它实际上包括三个步骤:首先调用 Response.Redirect,其次依次卸载所有的控件,最后调用 Response.End。
    在 .NET Beta 2 中,Microsoft 将不再包括 Page.Navigate 这个功能,大家应该现在就用 Response.Redirect 来代替 Page.Navigate,以节省将来升级时的时间。 

在微信小程序开发中,使用 `wx.navigateTo` `wx.redirectTo` 进行页面跳转时,当前页面的 `onHide` 生命周期回调会被触发。 ### 页面生命周期与跳转行为 当调用 `wx.navigateTo` 跳转至新页面时,当前页面不会被销毁,而是进入隐藏状态。此时,当前页面的 `onHide` 会被调用,而目标页面的 `onLoad`、`onShow` `onReady` 将依次执行。这种机制确保了页面切换过程中用户界面状态的正确管理[^1]。 ```javascript // 示例:使用 navigateTo 进行页面跳转 wx.navigateTo({ url: '/pages/nextPage/nextPage', success: () => { console.log('页面跳转成功'); } }); ``` 类似地,当使用 `wx.redirectTo` 方法进行页面跳转时,当前页面将被关闭并替换为目标页面,因此当前页面的 `onUnload` 会在跳转前被调用,而目标页面的 `onLoad`、`onShow` `onReady` 将依次执行。由于当前页面被卸载,`onHide` 在此情况下也可能在 `onUnload` 之前被调用,具体取决于运行环境基础库版本[^1]。 ```javascript // 示例:使用 redirectTo 进行页面跳转 wx.redirectTo({ url: '/pages/nextPage/nextPage', success: () => { console.log('页面重定向成功'); } }); ``` ### 组件生命周期与页面跳转 对于组件而言,如果当前页面因跳转而被隐藏或卸载,组件所在的页面生命周期(如 `pageLifetimes.hide`)也会被触发。这意味着组件可以通过监听页面的显示与隐藏状态来执行相应的逻辑,例如清理资源或更新视图[^4]。 ```javascript Component({ pageLifetimes: { hide() { // 页面被隐藏时执行 console.log('组件所在页面被隐藏'); }, show() { // 页面再次显示时执行 console.log('组件所在页面被重新展示'); } } }); ``` ### 注意事项 - 若希望在页面隐藏时执行某些操作(如保存状态或释放资源),应在 `onHide` 中实现。 - 使用 `wx.reLaunch` 或 `wx.switchTab` 时,当前页面的行为与 `redirectTo` 类似,可能会先触发 `onHide` 再触发 `onUnload`。 - 不同于页面跳转,若仅在当前页面内切换组件(如弹窗、模态框等),不会触发 `onHide`,因为页面本身并未被隐藏或卸载[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值