【转】 JavaScript:history.go() 的妙用(转) 处理post回发后返回
在Web开发中,会遇到从一页(父页)导向另一页(子页),并且要求“返回”父页的情况,在这里如果用ASP.NET提供的 Response.Redirect()方法,往往不会达到理想的效果,例如:返回后,重新加载了页面,无法保存导向子页前的状态,等等,在这里我就介绍 一下如何使用JavaScript中history.go()函数来实现返回功能并且保存住状态的方法。
这个函数用起来很简单,只要在页面上加一个html的input元素,例如:
<input type="button" value="返回">
然后再为这个元素添加onclick属性,如:
<input type="button" value="返回" onclick="history.go(-1);">
这样就能达到返回上一页的效果。但是,往往在实践中,并没有这么简单,当你在向服务器提交请求的时候,引起页面回发,你再用history.go(-1)
这招就不灵啦,它在这里是返回你回发前的状态,go后面的参数,实际上就是标识你要返回你回发第前n次的状态,所以只要能记住回发了几次,就能用
history.go(-n)准确地返回到父页了。
在Web开发中,全局变量也是存不住的,当页面回发后,全局变量的值就会丢失,取而代之的是视图状态,所以我们就只能用视图状态来记录回发的次数了。那么就封装一个视图状态属性把。
public int returnCount
{
get{
if(ViewState["returnCount"] == null)
ViewState["returnCount"] = 0;
return (int)ViewState["returnCount"];
}
set { ViewState["returnCount"] = value ;}
}
定义好这个后,把他放到Page_Load里面,让他每次在页面回发时减1,这样就能准确的记住回发了几次。
protected void Page_Load(object sender, EventArgs e)
{
returnCount--; //要放在!iIsPostBack之外,要不然就仅仅在页面第一次加载时执行一次,回发时就不执行了。
if(!IsPostBack)
{
}
}
吼吼,到这一步还没完呢,要把我们封装的属性加到Js里面。如下:
<input type="button" value="返回" onclick="history.go('<% =returnCount %>');">
这下就完美了,管你在页面上怎么回发,只要一点这个按钮,肯定会返回到父业的。
注意:
1、如果在本页面上有Response.Redirect()到本页或者类似的情况,那么就要将returnCount作为查询字符串传递一下了,因为这东西在页面失效时就over了。
2、本文仅对非Ajax的Web系统有作用,Ajax的还没仔细研究过.
【转】 JavaScript:history.go() 的妙用(转) 处理post回发后返回的更多相关文章
- javascript:history.go()和History.back()的区别(转载)
javascript:history.go()和History.back()的区别 <input type=button value=刷新 onclick="window. ...
- javascript history.go(-1) 返回刷新不起作用
js返回刷新两种方式: 方式一:有提示框 <input type="button" onClick="javascript:history.go(-1);loca ...
- [转载]Javascript:history.go()和history.back()的用法和区别
Javascript:history.go()和history.back()的用法和区别 简单的说就是:go(-1): 返回上一页,原页面表单中的内容会丢失:back(): 返回上一页,原页表表单中的 ...
- javascript.history.go();
转自:http://www.mikebai.com/Article/2009-11/757.html <input type=button value=刷新 onclick="wind ...
- javascript 返回上一页面:onclick="javascript:history.back(-1);"
<a href="<a href="javascript :history.back(-1)">返回上一页</a>或<a href=& ...
- html实现返回上一页的几种方法(javaScript:history.go(-1);)
html实现返回上一页的几种方法(javaScript:history.go(-1);) 一.总结: 1.javaScript:history.go(-1); 二.方法 1.通过超链接返回到上一页 & ...
- javascript:history.go(-1)的使用
1.问题描述 在微信项目开发中,比如常用联系人的增删改查操作中,比如跳入常用联系人管理页面,选中一个联系人修改它,就会跳入修改页面,修改完成后跳转到常用联系人管理页面,此时如果修改成功跳转采用的是页面 ...
- JavaScript 在函数中使用Ajax获取的值作为函数的返回值
解决:JavaScript 在函数中使用Ajax获取的值作为函数的返回值,结果无法获取到返回值 原因:ajax默认使用异步方式,要将异步改为同步方式 案例:通过区域ID,获取该区域下所有的学校 var ...
- JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里
JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里 <!doctype html> <html manifest="lab4.manifest&q ...
随机推荐
- CSS实现文本超过指定长度显示省略号
<style type="text/css"> li { width:200px;/*宽度,超过即会溢出*/ line-height:25px;/*设置行间距*/ te ...
- Python-argparse-命令行与参数解析
import argparse import numpy as np import cv2 import os import numpy.random as npr from dface.core.u ...
- BZOJ 5427: 最长上升子序列
$f[i] 表示长度为i的最长上升子序列的最后一位的最小值是多少$ 对于普通的$LIS我们可以二分确定位置去更新$ 再来考虑对于这个,如果有某一位没有确定的话 那么这一位是可以随便取的,也就是说,所有 ...
- spark streaming基础知识1
1.怎么理解spark streaming中的dstream? 它是spark streaming的基础数据结构,代表着(time,RDD)序列,有两种生成方式,一种是基于流数据创建(kafka,so ...
- android整理的一些基础知识
本篇文章内容大部分是来源于本人实际开发中的心得总结,不是非常全面,咱才疏学浅,如果有错误的地方恳请各位指出哦~ android四大组件 四大组件包括:Activity(活动),Service(服务), ...
- NGUI混合FingerGesture《卷二》分离触摸事件
背景 在使用NGUI按钮组件的时候,点击按钮同时触发FingerGesture的Touch事件, 通俗点讲,NGUI点击之后,点击事件被FingerGesture又执行了一遍. 解决思路 持有一个全局 ...
- How can For each...
Answer: I understand the IEnumerator/IEnumerable methods and properties and also how they are inte ...
- 在eclipse中new 对象后怎么通过快捷键自动生成返回对象
如题,每次new 对象的时候不想手动补全返回对象,可以实现快捷键生成返回对象.new 对象后可以按住ctrl+1,如下图: 选择第一行即可.
- PHP jsonencode 已经json中包含 汉字的处理
<?php $arr = array ( 'Name'=>'希亚', ); $jsonencode = json_encode($arr); echo $jsonencode; ?> ...
- IDEA 安装插件报错 Plugin Lombok Plugin was not installed: Cannot download
报错 解决 成功下载插件 3