js不能跳转到上一页面的问题解决方法
需积分: 0 169 浏览量
更新于2020-10-27
收藏 32KB PDF 举报
在JavaScript中,通常使用`history.go(-1)`方法来实现页面的后退功能,即返回浏览器历史记录中的前一个页面。然而,当在页面B中触发了如Click、Change等事件导致页面回传(PostBack)时,`history.go(-1)`可能无法按预期工作,因为这些事件会更新页面状态,使得历史记录中的上一个页面不再是页面A。
这个问题的根源在于,每次页面回传,浏览器都会将当前页面视为一个新的历史条目,因此`history.go(-1)`实际上会回退到触发回传之前的那个状态,而不是页面A。为了解决这个问题,我们需要记录页面回传的次数,并根据这个次数来决定回退的步数。
解决方法是通过在页面B中添加一个控件来存储回传的次数。例如,可以使用一个文本框(TextBox)来保存这个数值,初始值设为1。当页面回传发生时,如Click或Change事件被触发,我们将这个数值加1。在HTML部分,我们可以看到一个按钮(Button)用于触发回退操作,以及一个文本框(TextBox)用于存储回传次数。JavaScript函数`goto()`读取这个文本框的值,将其转换为数字,并用`history.go(-n)`来回退相应步数。
在服务器端(如ASP.NET),在`Page_Load`事件处理程序中,我们检查是否是页面回传(`!IsPostBack`)。如果不是第一次加载(即页面回传),则将文本框的值增加1,表示回传次数加1。这样,无论在页面B上发生了多少次回传,`TextBox1.Text`都将反映出正确的回传次数。
以下是这个解决方案的关键代码段:
```html
<asp:TextBox ID="TextBox1" runat="server" ToolTip="放一个控件保存页面回传次数">1</asp:TextBox>
<input id="Reset1" type="button" value="reset" onclick="goto()" />
```
```javascript
function goto() {
var n = document.getElementById("TextBox1").value;
var n = Number(n);
history.go(-n);
}
```
```csharp
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
this.TextBox1.Text = "1";
} else {
this.TextBox1.Text = Convert.ToString(Convert.ToInt16(this.TextBox1.Text) + 1);
}
}
```
通过这种方法,无论用户在页面B上触发了多少次回传,只需点击“返回”按钮(或者调用`goto()`函数),都能准确地回到页面A。这种技术对于处理涉及多次交互和回传的复杂网页逻辑非常有用,确保用户能够正确地在页面间导航。

weixin_38741075
- 粉丝: 6
最新资源
- 直线导轨穿梭车 多层穿梭车使用说明书 、主要技术参数、结构与工作原理、系统说明、操作模式、故障处理及其他异常现象
- 一个简单方便的目标检测框架(PyTorch环境可直接运行,不需要cuda编译),支持Faster-RCNN、Cascade-RCNN、Yolo系列、SSD等经典网络
- RISTDnet:强鲁棒性的红外小目标检测网络
- 基于 YOLO v2 的目标检测系统:可检测图像与视频,适用于公路及实验室场景
- 【Python编程教育】Python基础编程实验:环境搭建、语法掌握及常用库应用实践
- 2020 年中兴捧月阿尔法赛道多目标检测与跟踪初赛冠军方案
- 基于 Halcon 深度学习的分类、目标及缺陷检测
- 2018 至 2019 年目标检测领域论文汇总
- halcon的DeepLearning的分类、目标、缺陷检测
- 2018-2019 年度目标检测领域相关论文汇总整理
- 2021 年和鲸社区 Kesci(湛江)水下目标检测算法赛光学图像赛项
- ROS 机器人系统课程设计(自主导航+YOLO目标检测+语音播报)
- CenterNet 纯版本:便于二次开发且易于理解的目标检测与关键点检测工具
- python实现支持向量机分类器与核函数方法
- 使用 onnxruntime 部署 GroundingDINO 开放世界目标检测的 C++ 与 Python 双版本程序
- 使用 onnxruntime 部署 GroundingDINO 开放世界目标检测的 C++ 与 Python 双版本程序