<iframe>标签是很常用的,嵌在页面之中,可以做独立的加载和刷新。比如说,页面分左右或者上下结构,一般左侧和上侧是导航部分,右侧和下侧是目标页面的展示部分,只需要设置导航链接的target属性等于右侧iframe的name属性即可。

有一个需求,当session超时之后,无论点击任何的链接,都要使整个页面跳转至登陆页面。

以前未接触框架的时候,一般使用过滤器Filter来实现,过滤所有的url,当然对于登陆和退出的url不进行拦截,如果session不存在就重定向至登陆页。

接触struts2之后,就是用全局拦截器,拦截符合条件的url,依然是对session进行判断,看一看session里面的信息是否符合放行的条件。

现在是springmvc,拦截器与struts2原理基本一致,只不过本项目需要考虑的东西稍微多一些而已,但本文不对拦截器进行详细阐述。主要说一说window.parent。

如本文第一段所述,点击有target的链接,页面就会指向iframe,当session超时之后,点击链接依然如此,那么iframe里的页面会跳转至登陆页,整个页面却是不动的,这样我们就需要在登陆页中判断一下,该页面是否存在父页面,如果存在就把该登陆页的url赋给父页面。

然而,window.parent总是不为空,window.parent.location也是不为空,如果直接进入登陆页(其本身没有iframe),window.parent.location就是其自身。这样就区分不出登陆页是否有父页面了?当然了,通过解析window.parent.location的不同是可以区分出来的,但是这个太低端,不是本文讨论的重点。

问题的集中点在于,登陆页它是否存在于某个iframe里面,或者他的父页面中是否存在iframe,这个如何做呢?

偶然看到window.parent.frames,这个是获得父窗口的所有集合,如果window.parent.frames.length>0说明存在iframe,否则不存在,这样可以区分出登陆页面是否嵌在iframe中。但总觉得通用性不够,依然显得低端。

仔细观察,发现window.parent依然是一个window,也就是说是一个window对象,那么window对象之间可以不可以实现比较呢?比如说:window.parent==window我们想拿它的父窗口和他的当前窗口进行比较,会不会出错呢?多说无用,试试就知道了。

1,登陆页自己alert(window.parent==window);返回true。

2,登陆页嵌在iframe中;返回false。

说明我们的猜想是正确的,没有问题,这样我们就可以区分出登陆是否存在父页面了,而且各种情况都通用。

说一说window.parent的更多相关文章

  1. 关于 window.parent, window.top, window.self 详解

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

  2. WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION 图片上传

    CKEDITOR  编辑器   图片上传 WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION (CKEditorFuncNum,图片路径,返回信息); CKEditor ...

  3. Javascript 中的window.parent ,window.top,window.self 详解

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

  4. window.parent与window.openner区别介绍

    今天总结一下js中几个对象的区别和用法: 首先来说说 parent.window与top.window的用法 "window.location.href"."locati ...

  5. window.parent 与 window.opener

    window.parent针对iframe,window.opener针对window.open 父页面parent.jsp: <%@ page language="java" ...

  6. Js中的window.parent ,window.top,window.self 详解

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

  7. JS中iframe相关的window.self,window.parent,window.top

    window.self指的是当前窗口:他等价于window,self,window.self window.top指的是最顶层的窗口(有些页面可能会嵌套好几个iframe)如果只有一个窗口,那么就返回 ...

  8. window.parent

    今天出现了一个严重的bug,页面在载入时居然导致了页面崩溃,找了近5个小时的代码,才找到了原因(擦,我只能说我水平有限,浪费了太长时间了~). 源代码: var curr = window; whil ...

  9. window.parent ,window.top,window.self 详解

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

  10. JavaScript中,window.opener是什么?window.parent和window.opener有啥区别?

    来自CSDN的问答: window.opener是什么啊? ++++++++++++++++++++++++++++++++++++++++++++++++++ 弹出本窗体的句柄 比如你想点一个按钮直 ...

随机推荐

  1. ISNULL

    ISNULL 使用指定的替换值替换 NULL. 语法ISNULL ( check_expression , replacement_value ) 参数check_expression 将被检查是否为 ...

  2. vs运行代码版本不一致删除缓存

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

  3. HDU3368+枚举

    题意看不懂的直接看百度百科对黑白棋的解释... 做法:分情况讨论,一共8个方向. /* 搜索 */ #include<stdio.h> #include<string.h> ; ...

  4. Android USB Host与HID通讯 (二)

    不好意思,从上一篇到现在确实比较忙,中间又外出了一段时间,虽然也上LOFTER,或者看到一些朋友QQ上加我,给我发信息询问,有些看到了有些可能没看到,偶尔回复了一两个,也不咋的详细,在此我想说,一方面 ...

  5. mplayer windows configure修改

    相信大家在编译mplayer的时候,都会遇到一个问题,就是那个折腾人的mplayer会检测当面目录下有没有ffmpeg的文件夹. 没有的话,mplayer会启动git进行漫长的下载ffmpeg源码.其 ...

  6. 海量数据的二度人脉挖掘算法(Hadoop 实现)

    最近做了一个项目,要求找出二度人脉的一些关系,就好似新浪微博的“你可能感兴趣的人” 中,间接关注推荐:简单描述:即你关注的人中有N个人同时都关注了 XXX . 在程序的实现上,其实我们要找的是:若 U ...

  7. MySQL sql_slave_skip_counter

    因为mysql的主从复制是逻辑复制,所以slave在apply relay log的过程中,经常会遇到错误,而参数sql_slave_skip_counter可以设置跳过多少个event,让slave ...

  8. BZOJ_4326_[NOIP2015]_运输计划_(二分+LCA_树链剖分/Tarjan+差分)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4326 给出一棵带有边权的树,以及一系列任务,任务是从树上的u点走到v点,代价为u到v路径上的权 ...

  9. c#等待所有子线程执行完毕方法

    当我们在使用线程中,你会发现主线结束后子线程的结果才显示出来.现在我要等待所以子线程结束,然后在显示结果,怎么做呢? 方法如下: 1.使用 ManualResetEvent,代码如下:  using  ...

  10. 不是 EPUB ,而是 ePub

    ePub 是 Electronic Publication 的缩写,意为电子出版,是一个自由的开放标准,属于一种可以“自动重新编排”的内容,也就是文字内容可以根据阅读设备的特性,以最适于阅读的方式显示 ...