iframe中的模态框遮罩父窗口原理

关键点:

css的position定位为fixed或absolute

css的z-index, 最顶层的值最大如遮罩层为0那么弹出框最好是大于等于1的整数,总之记住弹出层要比遮罩的z-index值大就行

如果弹出模态框的使用场景没有嵌套在iframe或frame中掌握以上两点加上点css功底就可以写出漂亮的模态框了

特殊场景会涉及到跨域问题,可以在父页面和子页面分别设置<script type="text/javascript">document.domain="xxx.com"</script>对应到你的域名,如果在内外使用ip作为url可以不用设置这一项

在子页面中获取父页面的body对象var body = parent.document.body; 然后将你的遮罩层动态插入父页面内部第一个位置或body标签上面,使用dom或jQuery都可以实现(可以参照文档)

将模态框也插入父窗口并显示与遮罩层上部

点击 模态框的 关闭按钮, 确定按钮 等操作后 移除遮罩对象再移除模态框对象即可

例如(以jQuery为例):

插入遮罩层到父页面的body标签上面

$(mask).insertBefore($(parent.document.body))

删除父窗口body标签上面的遮罩对象

$(parent.document.body.previousSibling).first().remove();// 使用jQuery获取父页面Body的遮罩对象并删除

插入模态框到父页面(显示在遮罩层上方由z-index决定)

$(modal).append($(parent.document.body))

删除父窗口的模态框对象

$(parent.document.body).find(‘.modal-beautiful‘).first().remove();// 使用jQuery获取父页面Body的遮罩对象并删除, first可以不用加的

时间: 2024-10-21 13:03:19

iframe中的模态框遮罩父窗口原理的相关文章

jquery:iframe里面的元素怎样触发父窗口元素的事件?

例如父窗口定义了一个事件. top: $(dom1).bind('topEvent', function(){}); 那么iframe里面的元素怎样触发父窗口dom1的事件呢?这样吗? $(dom1, parent.document).trigger('topEvent'); 看似正确,实则误导人. 因为父窗口的jquery对象与iframe里面的jquery对象实际为两个对象(function),iframe里面的jquery并不会触发另一个jquery对象定义的事件.除非你在iframe这样

iframe学习(七)之父窗口的样式会影响子窗口吗?

父窗口的样式会影响子窗口吗? 这个答案是否定的,父窗口的样式不会影响子窗口 // 主窗口 <style> p { color: red; } </style> <script> window.onload = function () { var s = document.getElementsByTagName('iframe')[0]; } </script> </head> <body> <p>11</p>

Qt中,当QDockWidget的父窗口是一个不可以拖动的QTabWidget的时候实现拖动的方法

之前在做有关QDockWidget的内容时候遇到了瓶颈,那就是窗口弹出来之后拖动不了,也不可以放大和缩小,若是弹出来之后设置成了window的flags,也不可以拖动,而且也不是需要的效果. 1.弹出来之后的dockwidget的titlebar右边需要有3个按钮分别来控制放大与恢复.弹出来与收进去和关闭按钮.考虑到Qt自带的dockwidget弹出来后实现不了这个,所以参考了网上的方法,需要自己从QWidget中派生一个类来实现自己的titlebar 2.因为dockwidget是嵌套在QTa

MVC中调用模态框之后导致JS失效

今天在工作中碰到一个页面调用模态框之后,页面原来的JS失效的问题,由于前台经验较少,折腾了一天... 问题描述是这样,在页面,有两个下拉列表框A和B,做了下拉列表框联动,有一个button按钮会调用模态框,刚进入页面联动是好用的,所以联动的JS 代码没问题,点击模态框之后,JS失效. 上图是下拉列表框联动的JS 经过不懈的调试(其实就是各种瞎试)以及询问老大哥(这个才是解决之道),终于发现了问题所在: 页面刚加载进来的时候联动JS好用,是因为直接加载了JS,调用模态框之后,在success回调函

Angular2+之模态框-使用ngx-bootstrap包中的模态框组件实现

模态框是项目中经常会用到的一个公共功能,通常会被用左提示框或者扩展选项框. 下面,我用一个小例子来简单展示实现模态框功能的过程: 1.为项目加包: ng add ngx-bootstrap 2.在xxx.module.ts(模块.ts文件)中引入: ... import { ModalModule } from "ngx-bootstrap/modal"; ... @NgModule({ imports: [ ... ModalModule.forRoot(), ... ] }) ..

HTML父窗口与IFRAME中变量互访

1.HTML父窗口访问IFRAME中变量或函数 在父窗口脚本中写: //调用变量赋值 IframeObj.contentWindow.someVar = "test is ok"; //调用函数 IframeObj.contentWindow.someFunction(); 2.HTML中IFRAME访问父窗口中变量或函数 假设在父窗口脚本中具有方法: function showMsg(str){ alert('Read from iframe:'+ str); } 则在IFRAME可

父窗口与iFrame之间调用方法和元素

父窗口与iFrame之间调用方法和元素 父窗口调用子窗口: 调用元素 js格式: var obj=document.getElementById("iframe的name").contentWindow; var ifmObj=obj.document.getElementById("iframe中控件的ID"); ifmObj.click(); 实例: var obj=document.getElementById("ifm").content

获取父窗口iframe方法

在页面中,有个iframe,基于这个iframe,弹出了个窗口,这个窗口在关闭的时候需要操作iframe里的元素. 做法是 window.top.document.getElementById("_view_user_index_").contentWindow.document.getElementById("Score").value = $("#txt_Deductible").val(); 这里的_view_user_index_是ifr

ajax+json模态框中分页(spring+struts+mybatis+easyui分页插件)

0.业务需求: 点击每个数字的时候可以显示每个对应的详细记录.也就是得点击11的时候拿着开采部与C级去查询. 1.页面中的模态框与分页组件(注意:需要隐藏一个页号,点击分页插件的时候给隐藏的页号赋值,ajax再次请求的时候取页面的页号值) <!-- 隐藏查询条件的页号 --> <input type="hidden" name="currentPage" id="currentPage"> <!-- 模态框 统计详细