在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法打开当前窗口的那个窗口。

1、window.self

  功能:是对当前窗口自身的引用。它和window属性是等价的。

  语法:window.self

  注:window、self、window.self是等价的

2、window.top

  功能:返回顶层窗口,即浏览器窗口。

  语法:window.top

  注:如果窗口本身就是顶层窗口,top属性返回的是对自身的引用

3、window.parent

  功能:返回父窗口

  语法:window.parent

  注:如果窗口本身就是顶层窗口,parent属性返回的是对自身的引用

  在框架网页中,一般父窗口就是顶层窗口,但如果框架中还有框架,父窗口和顶层窗口就不一定相同了。

  总结:你应该当将框架视为窗口中的不同区域,框架是浏览器窗口中特定的部分。一个浏览器窗口可以根据你的需要分成任意多的框架,一个单个的框架也可以分成其它多个框架,即所谓的嵌套框架。

  注:parent与opener的区别:

    parent指父窗口,在frameset中,frame的parent就是frameset窗口。
  opener指用window.open方式创建的新窗口对应的原窗口。
  parent是相对于框架来说父窗口对象。
  opener是针对于用window.open打开的窗口来说的父窗口,前提是window.open打开的才有。

跳转总结:

  1、"window.location.href"、"location.href"——是本页面跳转

  2、"parent.location.href"——是上一层页面跳转

  3、"top.location.href"——是最外层的页面跳转

一、js方式的页面跳转

  1、window.location.href方式

  <script language="JavaScript" type="text/javascript">window.location.href="top.jsp";</script>

  注意:如果top.jsp中有iframe标签,则top.jsp页面将会在iframe中被打开。 

  2、window.loction.replace方式实现页面跳转,注意跟第一种方式的区别

  <script language="javascript">window.location.replace("http://www.dayanmei.com");</script>

  window.location.href和window.loction.replace的区别:

  有3个jsp页面(a.jsp, b.jsp, c.jsp),进系统默认的是a.jsp ,当我进入b.jsp的时候, b.jsp里面用window.location.replace("c.jsp");与用window.location.href ="c.jsp";从用户界面来看是没有什么区别的,但是当c.jsp页面有一个"返回"按钮,调用window.history.go(-1); wondow.history.back();方法的时候,一点这个返回按钮就要返回b.jsp页面的话,区别就出来了,当用 window.location.replace("c.jsp");连到c.jsp页面的话,c.jsp页面中的调用 window.history.go(-1);wondow.history.back();方法是不好用的,会返回到a.jsp 。

  3、self.location方式实现页面跳转,和下面的top.location有小小区别

  <script language="JavaScript">self.location='top.htm';</script>

  4、top.location 

  <script language="javascript">top.location='xx.jsp';</script>

  5、不推荐这种方式跳转

  <script language="javascript">window.history.back(-1);</script>

  6、页面自动刷新:把如下代码加入<head>区域中

<meta http-equiv="refresh" content="20">

  其中20指每隔20秒刷新一次页面.

  7、<a href="javascript:history.go(-1)">返回上一步</a>

  8、<a href="<%=Request.ServerVariables("HTTP_REFERER")%>">返回上一步</a>

  9、<a href="javascript:" onClick="window.open('http://hi.baidu.com/630270730','','height=500,width=611,scrollbars=yes,status=yes')">打开新窗口</a>

  10、window.history.forward()返回下一页

  11、window.history.go(返回第几页,也可以使用访问过的URL)

二、iframe中页面跳转

  1、iframe页面跳转:

  "window.location.href"、"location.href"是本页面跳转

  "parent.location.href"是上一层页面跳转

  "top.location.href"是最外层的页面跳转

  例:如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js这样写

  "window.location.href"、"location.href":D页面跳转

  "parent.location.href":C页面跳转

  "top.location.href":A页面跳转

  2.iframe中的target

  如果D页面中有form的话,  form提交后D页面跳转

  <form target="_blank">:  form提交后弹出新页面

  <form target="_parent">:  form提交后C页面跳转

  <form target="_top"> :  form提交后A页面跳转

三、iframe页面刷新

  D 页面中这样写:"parent.location.reload();": C页面刷新

(当然,也可以使用子窗口的 opener 对象来获得父窗口的对象:window.opener.document.location.reload(); )

  "top.location.reload();": A页面刷新
  注:window.location.href = window.location.href 也可以实现页面刷新,它与reload的区别是:如果在reload之前向服务器提交过数据,那么执行reload会重新执行这个提交操作。 而window.location.href = window.location.href 则不会,因为它是重新进入页面。

举个例子:如果A,B,C,D都是html,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js这样写

  1、window.open("Url地址","_blank") = window.open("Url地址");//在新窗口打开

  2、location = window.location = location.href = window.location.href =self.location.href = "Url地址";//在D页面实现展现

  3、window.open("Url地址","_self");//在D页面实现展现

  4、parent.location.href = window.parent.location.href ="Url地址";//在C页面实现展现

  5、window.open("Url地址","_parent");//在C页面实现展现

  6、top.location.href = window.top.location.href ="Url地址";//在A页面实现展现

  7、window.open("Url地址","_top");//在A页面实现展现

  8、parent.parent.location = "Url地址";//在B页面实现展现

  9、parent.open("Url地址","_parent") = parent.parent.open("Url地址","_self");//在B页面实现展现

如果D页面中有form的话:

  1、<form>: form提交后D页面跳转

  2、<form target="_blank">: form提交后弹出新页面

  3、<form target="_parent">: form提交后C页面跳转

  4、<form target="_top"> : form提交后A页面跳转

关于页面刷新,D 页面中这样写:   

  1、"parent.location.reload();": C页面刷新 (当然,也可以使用子窗口的 opener 对象来获得父窗口的对象:window.opener.document.location.reload(); )

  2、"top.location.reload();": A页面刷新

其他应用:

  1、js判断窗口或页面是不是在框架中打开的

<script type="text/javascript">var b= window.parent==window.self;document.write("当前窗口是否是底层窗口:"+b );</script>

  2、如果当前窗体不是顶级窗体,就把自己变成最顶层。从而防止别人iframe使用(防止iframe嵌套,常用在登录界面

 if (window.top !==window.self) {window.top.location=window.location;}

  3、子窗口刷新父窗口

<script language=JavaScript>self.opener.location.reload();
</script>
(或<a href="javascript:opener.location.reload()">刷新</a>   )

  4、如何刷新另一个框架的页面用

<script language=JavaScript>parent.另一FrameID.location.reload();
</script>

转载于:https://www.cnblogs.com/javahr/p/8409324.html

关于窗口跳转的一些总结相关推荐

  1. [转载]WPF窗口跳转及window和page区别

    刚接触WPF,有两个概念不是很懂,现理解如下: 1:window和page谁包含谁的问题 一新建WPF应用程序,发现默认启动界面是一个window,将默认启动改为page,没有错误.但是如果在page ...

  2. python跳转到程序顶部_python-如何使Tkinter窗口跳到最前面?

    python-如何使Tkinter窗口跳到最前面? 如何获得Tkinter应用程序跳转到最前面? 当前,该窗口显示在我所有其他窗口的后面,并且没有获得焦点. 我应该打电话给一些方法吗? nathan ...

  3. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

  4. 页面之间跳转、新打开窗口跳转

    页面之间进行跳转 //code为传递的参数,以&进行参数拼接 window.location.href = "http://58.56.27.54:38102/bi/Viewer?c ...

  5. java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...

    最近学习Java web,在学习过程中想实现一个需求,就是在jsp页面跳转的时候,希望跳转后的新页面在新窗口中打开, 而不是覆盖原来的页面,这个需求使我困惑了好长时间,后来通过大海捞针似的在网上寻找方 ...

  6. vue项目怎么样去实现新窗口跳转_vue跳转方式(打开新页面)及传参操作示例

    本文实例讲述了vue跳转方式(打开新页面)及传参操作.分享给大家供大家参考,具体如下: 1. router-link跳转 // 直接写上跳转的地址 link跳转 // 添加参数 // 参数获取 id ...

  7. c#退出窗口跳转_编写Qt多窗口程序

    导语 程序要实现的功能是:程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出.当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个 ...

  8. pyqt 多窗口跳转

    今天在做pyqt5的多页面跳转时遇到问题,一点击button按钮,程序会崩溃.在网上查了下,应该是当窗口A调用窗口B的时候,两个窗口不能是同一类型.我写的时候把A.B同时写成了QWidget.把窗口B ...

  9. 页面局部跳转页面(原有窗口跳转/弹框跳转)

    <a href="#" target="_blank" οnclick="toTest();">Test</a> 当 ...

最新文章

  1. 徐波 博士 计算机,徐波教授:医工联合促进智能肿瘤学发展——探秘肿瘤精准治疗中的AI技术...
  2. 多款优秀的 JS MVC 框架对比
  3. 图像 理想低通滤波_图像处理之滤波(下)
  4. 怎么在Java里辨别小数_求教java中如何判断一个数是不是小数,求详细代码及解释...
  5. java逐行读取文件_Java逐行读取文件
  6. Oracle疑问解答
  7. 软件工程之需求说明书
  8. 彻底删除vmware
  9. 4.4 使用倾斜工具和整形工具制作图标 [Illustrator CC教程]
  10. SALOME源码分析:GUI模块
  11. java简单雷电游戏代码_[代码全屏查看]-Java 雷电游戏(完成)
  12. 阿里CEO盒马内部演讲实录:跑得久才是最关键的
  13. visio首要任务闪退软件设置
  14. 计算机无法自动连接网络地址,ip地址错误网络无法连接怎么办-ip地址错误网络无法连接解决办法 - 河东软件园...
  15. Tensorflow教程-曼德布洛特(Mandelbrot)集合
  16. ros 机械臂复位_关于OTC机器人编码器数据复位参考
  17. 福利来了 -- 压缩字体包工具
  18. Python爬取PPT模板(requests+BeautifulSoup+多线程)
  19. 最新Things3 for Mac(最好用的GTD时间管理工具)中文:使用教程
  20. 计算机视觉的sci文章,SCI(图像-计算机视觉-测量)(国外英文资料).doc

热门文章

  1. Docker 系列 _ 01_ 一念缘起
  2. mysql优于oracle的地方_MYSQL转为ORACLE要注意的地方
  3. synchronized 关键字的底层原理
  4. java io类型_Java NIO之Java中的IO分类
  5. struts2.5通配符使用异常
  6. 高德开放平台定位功能对接
  7. React Native将license修改为MIT,与React保持一致
  8. PhoneGap跨平台移动应用开发框架体验
  9. 关于如何学好游戏3D引擎编程的一些经验
  10. 1加6投屏_1加6投屏_6月的早餐,1杯牛奶加燕麦,营养健康又美味,饱腹感很强...