IE下object元素遮挡div表单
Posted 凝荷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IE下object元素遮挡div表单相关的知识,希望对你有一定的参考价值。
目前遇到这样的一个问题:
我用ActiveX插件做了一个C#的播放器,要将这个插件放到web浏览器中,然后可以通过前台页面来控制视频的播放,暂停还有回放,这个时候发现object的onclick事件无法相应,一搜索,确实是这样。那么怎么办呢?万能的搜索啊,终于有两种解决方案:
1,js监听ActiveX控件的行为。(按照网上给的,行不通,监听失败,原因是很多都是10年左右用vc++写的ocx插件的方法,现在行不通)
2,直接通过js控制。
很明显采用第2个方法,于是新的问题就出现了:
怎么调用?
于是有搜索,一种解决方案:div覆盖。
于是就出现了标题中的问题:IE下object元素遮挡div表单
解决方案为:用iframe:
原理:Iframe框架可以遮盖OBJECT、SELECT,DIV可以遮盖Iframe。因此,我们可以将Iframe放置在DIV层内,将Iframe大小宽度设置成与层一样放置在层之下,当层经过OBJECT、SELECT时,下方的框架将替层遮盖其不能遮盖的控件。
需要说明的是使用html标签属性设置显示层次,必须是z-Index而不是zIndex。zIndex是使用脚本动态修改属性使用。两者不通用。
原因:
大多表单控件或HTML控件是使用浏览器本身渲染绘制,因此层次可以由浏览器自身控制。而SELECT控件是Windows窗口控件,同样可见型ActiveX容器也是使用面向Windows技术开发。它们表现实质仍是相同,都是Windows窗口包含句柄。因此,浏览器不能对其调整层次,浏览器本身与他们都是平级的
最后解决方案:
<td class="videoBox"> <div class="videoDiv" style="background-color:#f00;" onclick="clickme()"> <iframe src="about:blank" frameBorder=0 marginHeight=0 marginWidth=0 style="position:relative; visibility:inherit; top:0px;left:0px;height:100%;width:100%; z-Index:-1; filter=‘progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)‘;"> </iframe> </div> <object id="player00" name="player00" classid="clsid:0aafd513-e1ed-4ce9-8539-9434f9106030" selected="true" displaying="true" style="width: 100%;height: 590px;margin: auto" > </object> </td>
对应的CSS
.videoBox{ position:relative; /*给表格的td设置绝对定位属性*/ } .videoDiv{ width:100%; height:100%; position:absolute; left:5px; top:0; z-index:11;/*给覆盖在视频上面的div设置相对属性,其中z-index一定要比视频的z-index数值高*/ } object{ position:relative; left:0; top:0; z-index:10; }
原文来自于
以上是关于IE下object元素遮挡div表单的主要内容,如果未能解决你的问题,请参考以下文章