处理iframe中嵌套本页面的问题

  在框架中,常常会出现一种状况,当session失效之后再次操作时,会发现登录页面(或者你要操作的页面)突然见就显示在了iframe中,这是很不好的体验。

  出现的效果大致像这样:

  出现了这种状况,我们常常希望的是——当session失效之后再次操作时进入登录页面,而且该登录页面是在iframe的父级页面,也就是浏览器上地址栏里面能看见的路径的页面。

  解决这种bug很简单,只需要在登录界面里面加上如下代码即可:

1 <script type="text/javascript">
2         $(function(){
3             //判断登录页面是否在iframe中
4             if (self.frameElement && self.frameElement.tagName == "IFRAME") {
5                  parent.location.reload();//父页面重新加载
6             }
7         });
8     </script>

  这段代码的意思就是:先判断该页面是否是在iframe里面,如果是——刷新父页面(此时重新加载,因为session失效的缘故,导致父页面刷新的结果是登录界面);

  最终我们的效果就会变成这样:

  代码十分简短,也十分有用。。

时间: 2024-11-12 23:37:06

处理iframe中嵌套本页面的问题的相关文章

iframe中操作主体页面的元素,方法

在不使用三大框架的情况下,iframe的使用可以做到在页面中直接引入别的页面作为当前页面的一部分,但是在iframe的使用过程中存在一些相互之间的操作 例如在iframe中获取主页面的元素,使用主页面的js中定义的方法 第一.在iframe中查找父页面元素的方法: $('#id', window.parent.document) 第二.在父页面中获取iframe中的元素方法: $(this).contents().find("#suggestBox") 第三.在iframe中调用父页面

iframe中嵌套.xbap文件,去掉上部导航栏

当我们在iframe标签中嵌套一个.xbap的时候,页面上部会显示出一个导航栏,如何去掉它呢? 有两种方式: (1)我们可以加在xaml中: <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="HomePage" ShowsNa

iframe中涉及父子页面跨域问题

什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制.所谓同源是指相同的域名.协议和端口,只要其中一项不同就为跨域. 举几个例子: http://a.123.com/index.html和http://a.123.com/index.js非跨域,它们有相同的域名,协议和端口. http://a.123.com/index.html和http://b.123.com/index.js跨域,相同的端口.协议,但是域名不同(a.123.com和b

js代码中嵌套jsp页面传递的值引起的安全问题

在jsp相互间传值,我们经常用string str=request.getParameter("st");这种方式来获取值,然后再在js代码中引入 var str=<% str%> 这么写会有安全问题,用fortify软件就能测出问题.提示跨域安全问题,其实不跨域也可以解决这种问题,把变量放到request域中,用el表达式来获取 这么写: string str=request.getParameter("st");request.setAttribut

js如何判断是否在iframe中/JQuery调用iframe父页面元素与方法

//方式一 if (self.frameElement && self.frameElement.tagName == "IFRAME") { alert('在iframe中'); } //方式二 if (window.frames.length != parent.frames.length) { alert('在iframe中'); } //方式三 if (self != top) { alert('在iframe中'); } 第一.在iframe中查找父页面元素的

python+selenium如何定位多层iframe中元素

在 web 应用中经常会出现 iframe 嵌套的应用,假设页面上有 A.B 两个 iframe,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. iframe 中实际上是嵌入了另一个页面,而 webdriver 每次只能在一个页面识别,因此需要用 switch_to.frame 方法去获取 iframe 中嵌入的页面,对那个页面里的元素进行定位. 常用方法如下: # 先找到到 iframe1(id = f1) driver.switch_to_frame("f1&qu

iframe嵌入的子页面如何刷新父窗口

iframe中刷新父页面方法及一些按钮刷新代码集合[原创+转]2009-07-23 11:12a页面里iframe了个b页面,我想实现在b页面里一个按钮,一按就刷新a页面,也就是父页面,不是只刷新iframe里面的b页面 哦~ 请问b页面里的<input type="button" class="btn" value=" 返 回 " onclick="history.back();">那个onclick 要怎么写呢

iframe的跨域高度自适应(通过跨域页面中嵌套本域页面)

实习不久接到一个任务,在网页中嵌套另一个工程的网页.本以为这是轻而易举的一件事情,结果被测试姐姐折腾得够呛.多次和我谈心说到这个高度固定导致iframe出现滚动条有多么不好看,对于工程整体的影响有多么恶劣.因为跨域的原因,这个需求被拖了许久,真是很痛苦的一件事.最终在我离开公司之前搞定了这个单. 这里就把我的研究过程写下来以供大家参考. 首先需要了解一下何为同域,何为跨域: URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名

vue中嵌套页面 iframe 标签

vue中嵌套iframe,将要嵌套的文件放在static下面: <iframe src="../../../static/bear.html" width="300" height="300" frameborder="0" scrolling="auto"></iframe> src可以使用相对路径,也可使用服务器根路径http:localhost:8088/-等: <ifr