问题描述
当我们使用easyui做后台管理系统的时候,会使用tree组件来实现树形菜单,而我们每点击一次相应菜单,会根据是否有url来判断是否是一级菜单,以及是否已经存在
//根据该节点名字判断该节点是否存在 if ($("#tabs").tabs("exists",node.text)){ //如果存在就直接选中 $("#tabs").tabs("select",node.text); }
如果为否,我们就会嵌套一个iframe标签来打开一个相应的html窗口
$("#tabs").tabs("add",{ //标题为当前节点的名称 title:node.text, //没有边框 border:false, //是否显示关闭按钮 closable:true, //嵌套iframe标签 content:"<iframe frameborder='0' src='"+node.url+"' width='100%' height='100%'/>" })
而此时有一个什么样的问题呢?有这样一个情况,当我们在同一个浏览器中,在A和B两个选项卡中都打开了后台管理页面,然后我们在A页面进行了注销操作,此时到A页面点击“员工管理”,那么此时应该要实现全局刷新并返回到登录页面,如下图所示
但是此时,由于我们嵌套iframe的缘故,当我们点击员工管理,正常发送的请求是/employee/index,而此时由于已经logout,那么当前用户未认证
content:"<iframe frameborder='0' src='"+node.url+"' width='100%' height='100%'/>"
所以这里的iframe窗体的url地址就会变成login.jsp,从而演变成了iframe嵌套问题,也就是如下图所示:
解决思路
在我们html中,每一个打开的窗体都有一个window对象,例如我们上图所示,如果站在内层窗体的角度来讲,实际上外层窗体其实就是内层窗体的父窗体(如果打开很多个嵌套,那么最外层窗体就是top),如果要获取外层窗体也很简单,就是window.parent。
此时,如果我们要打开i的窗体不是最外层窗体,我们只需要将最外层的窗体对象赋值给当前窗体即可
//如果当前的窗体不是最外层窗体 if (window != top){ //那么就将最外层窗体的的地址赋给当前窗体 top.location.href = window.location.href; }
到此这篇关于关于解决iframe标签嵌套问题的解决方法的文章就介绍到这了,更多相关iframe标签嵌套内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
一 前言 本篇文章主要从 react-hooks 起源,原理,源码角度,开始剖析 react-hoo...
限制 input 输入框只能输入纯数字 1、onkeyup = value=value.replace(/[^\d]/g,'...
1.情人最后难免沦为朋友,可是,我们连朋友都做不成。 2.等待不是为了你能回来...
思路: 一个外层盒子设置背景;一个内层盒子设置宽高背景,并设置animate让盒子...
再次感谢大家对 Flutter Engage China 活动 的关注和积极参与!我们在活动前后收...
Dreamweaver中想要给文字中的个别文字添加背景色,该怎么添加呢?下面我们就来看...
(这个Xmind感兴趣的话可以加文末公众号发送「快速阅读」即可获取) 如何快速阅读...
本文学习的内容主要如下所示: 1.关闭按钮 2.Carets 3.快速设置浮动 4.内容区域...
原始代码: center.html : !DOCTYPE htmlhtml lang=Zhhead meta charset=UTF-8 ...
网站登录需要密码,使用Dreamweaver创建表单的时候,该怎么设置6位数的密码呢?...