关于解决iframe标签嵌套问题的解决⽅法
问题描述
当我们使⽤easyui做后台管理系统的时候,会使⽤tree组件来实现树形菜单,⽽我们每点击⼀次相应菜单,会根据是否有url来判断是否是⼀级菜单,以及是否已经存在
//根据该节点名字判断该节点是否存在
if ($("#tabs").tabs("exists",)){
//如果存在就直接选中
$("#tabs").tabs("select",);
}
如果为否,我们就会嵌套⼀个iframe标签来打开⼀个相应的html窗⼝
$("#tabs").tabs("add",{
//标题为当前节点的名称
,
//没有边框
border:false,
//是否显⽰关闭按钮
closable:true,
//嵌套iframe标签
content:"<iframe frameborder='0' src='"+node.url+"' width='100%' height='100%'/>"iframe嵌套页面加载慢
})
⽽此时有⼀个什么样的问题呢?有这样⼀个情况,当我们在同⼀个浏览器中,在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标签嵌套内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章,希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。