zoukankan      html  css  js  c++  java
  • 关于窗口跳转的一些总结

      在应用有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>
  • 相关阅读:
    vue基础八(路由组件)
    vue基础(七),同源策略以及跨域,vuex
    如何将注释的代码折叠
    axios发请求的基本语法:
    vue基础(六)全局事件总线
    vue基础(五),对todos的操作
    Android仿IOS的AssistiveTouch的控件EasyTouch实现
    CentOS下配置HTTPS访问主机并绑定访问端口号
    Effective Java:对于所有对象都通用的方法
    物联网操作系统HelloX开发者入门指南
  • 原文地址:https://www.cnblogs.com/javahr/p/8409324.html
Copyright © 2011-2022 走看看