您的位置:首页 > Web前端 > JavaScript

JS实现页面跳转的多种方法及区别

2013-08-05 16:44 639 查看
1.window.top.window.location =
"index.asp";

2.window.top.location.href="index.asp"

3. window.top.location.replace("index.asp");

4. window.navigate("index.asp"); 

5.windows.open()
//
新窗口JS脚本可以用 windows.parent指向前一个窗体的引用访问前一个窗口的属性和方法;

6. window.history.go(-2);//这个速度最快,从本地缓存中读取。但页面数据可能不是最新

history.go(-1), 
history.back().
window.history.forward()
... ... 详细history实现方法参见博文< js页面跳转 和 js打开新窗口方法>【http://blog.csdn.net/Henry_YQH/article/details/8530711】
------------------------------------
先解释前缀属性: ps.来自犀牛书

window:每个浏览器窗口及窗口框架都是由window对象表示的;应用程序中每个窗口都会创建一个window对象,为JS创建了一个独立的执行环境

其中包含的重要属性有document(文档显示结构),location(地址属性),frames[
](表单数组), history(历史记录), screen, navigator(浏览器属性), top(最外层框架), parent(上一层框架), self, window(自引用属性) 

ps: 默认代表的就是他的window属性; 所以应该可以省略掉window关键字,我们的使用中就很少出现window关键字;

location:窗口的location属性是一个Location对象,代表当前显示文档的URL;

locaiton的href属性是一个字符串,包含完整的URL,其他属性protocol, host, pathname和search(?之后的部分)等则分别声明了URL的各个部分;直接取location的值实际取到的就是它的href一样的值,因为它自带了一个toString()方法;

可以把一个URL字符串直接复制给loation对象,作用是引起浏览器装载这个URL页面的内容,但是location对象本身并没有一种方法可以用一个URL替换;但是js1.1之后有两种方法:reload()会从webserver重新装载当前界面;replace()会装载并显示指定的URL;但是为给定URL调用replace和把一个URL赋值给窗口的location不同,当调用replace时,指定的URL会替换浏览器历史中的当前URL,而不是在历史列表中创建一个新条目,如果用浏览器上的back按钮,就可能无法回到原始文档。

PS.个人使用中发现,起码在chrome浏览器中,给location赋值和给location的href赋值,实现是有区别的,给location赋值,浏览器可能会做更多资源释放的动作(具体问题个人博客赘述: http://blog.csdn.net/mrvinc/article/details/9733281)

---------------------------------------

另外还有一些服务器实现方法:

Response.Redirect()
这个的工作原理就是:客户端输入url,向服务器发一次请求,访问到服务器,然后服务器响应返回一个跳转的url到客户端,然后浏览重定向(302),再像服务器发送一次请求,然后服务器根据请求,响应操作。实现这个过程中间访问了两次服务器,访问是有时间的所以这个比较耗时间。
这个后台使用的跳转方法实际上跳转效率稍微低点,因为需要和服务器两次交互才到目的页面。

Server.Transfer()
这个的工作原理就是:客户端输入url,向服务器发一次请求,访问到服务器,然后服务器响看你要访问一个新得url,直接从服务器跳转访问,返回你想要显示的。中间就访问了一次服务器,浏览器的地址不发生改变。

 window.showModalDialog()打开子窗口方法;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: