iframe标签flash遮盖页面元素问题——wmode参数
最近做项目过程中,遇到各种小问题,所以打算通过博客园来记录各问题的解决办法。
这篇的问题背景是这样子的:项目是用的AngularJS框架,在某个页面上用了wangEditor富文本编辑器插件(github地址:https://github.com/wangfupeng1988/wangEditor),通过配置一些参数,编辑器界面如下:

其中,视频功能,我改造了一下,原本的编辑器只能上传网络视频,我增加了上传本地视频的功能(扯远了。。忽略我。。。),插入网络视频就是把各大在线视频网站上的视频分享链接里的iframe标签copy过来,然后提交,提交完成之后,页面会加载iframe标签的独立网页,显示视频。copy一个优酷视频:<iframe height=498 width=510 src='http://player.youku.com/embed/XMTg5Njg2Mjk4NA==' frameborder=0 'allowfullscreen'></iframe>,插入完成之后如下:

下面问题来了,我需要保存编辑器中的内容,点击下方保存按钮时,会出现一个模态框,给用户确认提示,除了谷歌浏览器正常,其余浏览器(ie火狐各版本)中弹框出现的一刹那,懵了,弹框的z-index设置的是1050啊,在所有css里是最大值了,但是竟然被插入的iframe标签给遮住了!!!如图:

于是,作为一枚刚入门的前端,上网查各种方法,查到的最多的一种解决办法就是修改iframe的position和z-index,但是经过试验,没能得到解决。最后查到的一个有效解决办法如下:
iframe标签的src值后面添加?wmode=transparent
在每次插入网络视频的时候,修改iframe标签,于是又改造了wangEditor.js的代码,如下,问题就解决了~
//处理iframe标签,解决iframe视频覆盖弹出框问题
var url = $link.attr("src");
$link.attr('src', url+"?wmode=transparent");

问题解决了,那么wmode是什么呢?
wmode即window mode(窗口模式),总共有三种:
window模式,默认情况下的显示模式,在这种模式下flash player有自己的窗口句柄,这就意味着flash影片是存在于Windows中的一个显示实例,并且是在浏览器核心显示窗口之上的,所以flash只 是貌似显示在浏览器中,但这也是flash最快最有效率的渲染模式。由于他是独立于浏览器的HTML渲染表面,这就导致默认显示方式下flash总是会遮 住位置与他重合的所有DHTML层。
Opaque模式,这是一种无窗口模式,在这种情况下flash player没有自己的窗口句柄,这就需要浏览器需要告诉flash player在浏览器的渲染表面绘制的时间和位置。这时flash影片就不会在高于浏览器HTML渲染表面而是与其他元素一样在同一个页面上,因此你就可 以使用z-index值来控制DHTML元素是遮盖flash或者被遮盖。
Transparent模式,透明模式,在这种模式下flash player会将stage的背景色alpha值将为0并且只会绘制stage上真实可见的对象,同样你也可以使用z-index来控制flash影片的 深度值,但是与Opaque模式不同的是这样做会降低flash影片的回放效果,而且在9.0.115之前的flash player版本设置wmode=”opaque”或”transparent”会导致全屏模式失效。
附参考链接:http://codego.net/410900/
iframe标签flash遮盖页面元素问题——wmode参数的更多相关文章
- iframe标签里面的页面元素只读
iframe标签里面的页面元素只读,可以通过设置一个只读的透明div进行遮罩实现. html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- JQuery调用iframe父页面元素与方法
JQuery操作iframe父页面与子页面的元素与方法 下面简单使用Jquery来操作iframe的一些记录,这个使用纯JS也可以实现. 第一.在iframe中查找父页面元素的方法: $('#id', ...
- iframe中操作主体页面的元素,方法
在不使用三大框架的情况下,iframe的使用可以做到在页面中直接引入别的页面作为当前页面的一部分,但是在iframe的使用过程中存在一些相互之间的操作 例如在iframe中获取主页面的元素,使用主页面 ...
- iframe 调用父页面元素
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="IFrame.aspx.cs ...
- iframe多层嵌套时获取元素总结
父页面获取子页面元素: 注意:onload事件 jQuery获取: $("iframe").contents().find("holder")......; ( ...
- 使用iframe标签结合springMvc做文件上传
1.iframe.jsp <body> <h1>测试iframe文件上传</h1> <!-- 1.要求表单的target属性名称与iframe的name名字一 ...
- iframe标签在PC端的使用
随着前端框架的崛起 各种组件化 模块化开发 然而我发现在PC端要考虑兼容 ~~~~ 自己琢磨着 在PC端怎么吧一个页面做成一个公共的部分 发现有个iframe标签可以在页面中嵌套 虽然iframe可 ...
- iframe高度自动随着子页面的高度变化而变化(不止要在iframe标签里加上this.height=this.contentWindow.document.body.scrollHeight)
最近使用iframe整合页面遇到一些难题,走了很多弯路才解决,借此记录一下: 1 <!-- 页面主体内容 --> 2 <div class="iframe-wrapper& ...
- Selenium_webdriver获取iframe子页面元素
有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题.这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一.如果你在一 ...
随机推荐
- Curator Recipes(Cache&Counter)
Cache 路径缓存(Path Cache) 监视一个ZNode,当子节点增加.更新.删除改变状态时,路径缓存会在本地保存当前子节点及其数据和状态. public PathChildrenCache( ...
- Cocos2d-x 3.x事件分发机制总结
在2.x中处理事件需要用到委托代理(delegate),相信学过2.x的触摸事件的同学,都知道创建和移除的流程十分繁琐.而在3.x中由于加入了C++11的特性,而对事件的分发机制通过事件分发器Even ...
- 转载:jsp九大内置对象和四大作用域
摘要: JSP的九大内置对象: page,application,session,request,response,out,exception,config,pageContext. JSP的四个作用 ...
- Listview右侧 IndexBar
qq 好友聊天界面,右侧 IndexBar A B C D ,点击跳转到相应的联系人名字 import android.content.Context; import android.graphic ...
- shell实现四则运算简单方法
在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法.1.简单方法$ b=$((5*5+5-3/2)) $ echo ...
- linux显示行数命令
linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...
- google谷歌翻译插件-网页一键翻译
上个月转载的一篇博文,是推荐的四款非常实用的翻译插件,这几天看这个chrome插件网首页有新增了一个google谷歌翻译插件.我能说实话,这款插件比之前推荐的4款翻译插件更好用吗?也不能完全说是更好用 ...
- Atomic 升级
Atomic 采用类似github的版本管理, 可以使用以下命令升级 ostree remote add --set=gpg-verify=false atomic20160212 http://. ...
- MAMP、wordpress安装
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Helvetica } p.p4 { margin: ...
- SSLv3协议、TLSv1.2协议配置不对导致javax.ws.rs.ProcessingException: java.net.SocketException: Connection reset
SSl:Secure Sockets Layer 安全套接层 TLS:Transport Layer Security传输层安全 是为网络通信提供安全及数据完整性的一种安全协议.TLS与SSL在传输层 ...