最近做项目过程中,遇到各种小问题,所以打算通过博客园来记录各问题的解决办法。

这篇的问题背景是这样子的:项目是用的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参数的更多相关文章

  1. iframe标签里面的页面元素只读

    iframe标签里面的页面元素只读,可以通过设置一个只读的透明div进行遮罩实现. html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  2. JQuery调用iframe父页面元素与方法

    JQuery操作iframe父页面与子页面的元素与方法 下面简单使用Jquery来操作iframe的一些记录,这个使用纯JS也可以实现. 第一.在iframe中查找父页面元素的方法: $('#id', ...

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

    在不使用三大框架的情况下,iframe的使用可以做到在页面中直接引入别的页面作为当前页面的一部分,但是在iframe的使用过程中存在一些相互之间的操作 例如在iframe中获取主页面的元素,使用主页面 ...

  4. iframe 调用父页面元素

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="IFrame.aspx.cs ...

  5. iframe多层嵌套时获取元素总结

    父页面获取子页面元素: 注意:onload事件 jQuery获取: $("iframe").contents().find("holder")......; ( ...

  6. 使用iframe标签结合springMvc做文件上传

    1.iframe.jsp <body> <h1>测试iframe文件上传</h1> <!-- 1.要求表单的target属性名称与iframe的name名字一 ...

  7. iframe标签在PC端的使用

    随着前端框架的崛起 各种组件化 模块化开发 然而我发现在PC端要考虑兼容 ~~~~ 自己琢磨着 在PC端怎么吧一个页面做成一个公共的部分  发现有个iframe标签可以在页面中嵌套 虽然iframe可 ...

  8. iframe高度自动随着子页面的高度变化而变化(不止要在iframe标签里加上this.height=this.contentWindow.document.body.scrollHeight)

    最近使用iframe整合页面遇到一些难题,走了很多弯路才解决,借此记录一下: 1 <!-- 页面主体内容 --> 2 <div class="iframe-wrapper& ...

  9. Selenium_webdriver获取iframe子页面元素

    有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题.这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一.如果你在一 ...

随机推荐

  1. [UI] APP界面设计流程

    此教程从交互开始进行APP界面设计,主要是一个流程,还是值得童鞋们学习一下的.包括:1.交互流程设计:2.风格定位:3.功能icon设计:4.界面视效整体优化:5.应用icon设计.

  2. 一键强制修改任意Mysql数据库的密码,修改任意环境Mysql数据库。

    本文采用我软件里面的内置改密功能,可以一键强制修改Mysql数据库的密码, 在修改过程中,会强制干掉Mysql主程序,修改完成后重新启动Mysql就可以了. 首先讲解如何一键强制修改PHPWAMP自身 ...

  3. FineReport中以jws方式调用WebService数据源方案

    在使用WebService作为项目的数据源时,希望报表中也是直接调用这个WebService数据源,而不是定义数据连接调用对应的数据库表,这样要怎么实现呢? 在程序中访问WebService应用服务, ...

  4. open live writer下载安装

    以前记笔记都是用Evernote,啥都记在上面.除了学习工作的以外,还有各种账号密码啦(这个真心有必要,再也不用各种试了),妈妈要我帮她下载的广场舞名字啦,我双十一要剁手的东西啦等等.很好用的,推荐! ...

  5. iOS Quartz2D画图

    对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系 ...

  6. 论JSON的重要性☞异步上传过程中data取多组值的方法

    异步上传取多组值一起post改变属性 如图: 看图说话

  7. Gentoo/Arch常用软件配置

    ## Desktop Environment ### GNOME ### KDE ### LXDE ### Xfce ## Window Managers ### dwm x11-wm/dwm ### ...

  8. python3 获取阿里云ECS 实例及监控的方法

    #!/usr/bin/env python3.5 # -*- coding:utf8 -*- try: import httplib except ImportError: import http.c ...

  9. [读书笔记]python3.5实现socket通讯(UDP)

    UDP连接: 无连接,从一个端向另一端发送独立的数据分组 使用UDP连接的客户-服务器程序: UDPServer.py import socket serverPort = 50009 serverS ...

  10. GZIP压缩、解压缩工具类

    GZIP压缩.解压缩工具类: public class GZIPUtiles { public static String compress(String str) throws IOExceptio ...