javascript - 嵌入式对象后面的 jquery 组合框(仅限 IE)

标签 javascript jquery html internet-explorer combobox

在 Internet Explorer 中,我有一个 jquery 组合框,它在嵌入式对象(例如 pdf 文档)后面打开。如何确保组合框始终位于嵌入对象的前面?

有关示例,请参阅此 fiddle :http://jsfiddle.net/RDd3A/258/ (更新的 fiddle 包含我尝试解决它的尝试)

HTML:

<select id="combobox">
  <option value="">Select one...</option>
  <option value="23">Really long stuff that might wrap</option>
  <option value="25">Normal Stuff</option>   
</select>
<br/>
<embed src="https://www.xs4all.nl/media/transparantie/Transparantierapport-2012.pdf"/>

Javascript:

$("#combobox").combobox();

(我已经剥离了所有的 css)

我已经尝试过以下方法:

  • 使用 wmode="transparant"作为属性
  • 在 url 中使用 ?wmode=transparant
  • 使用 iframe
  • 使用 z-index

不幸的是,这没有帮助,组合框仍然在嵌入文档的后面。有人吗?

最佳答案

这是一个已知的 IE 问题,我前段时间进行了调查,@Gyum Fox 已经提到了我所知道的唯一方法 - 另一个“掩码”iframe .但是,您不必在元素“之间”放置 iframe - 您可以将绝对定位的 iframe 放置在具有 100% height 的相应元素内和宽度。 要放置在元素内的 iframe 的 CSS:

iframe.ie-fix {
   position: absolute;
   border: none;
   top: 0;
   left: 0;
   height: 100%;
   width: 100%;
   z-index: -1;
} 

jQuery动态构造菜单内容的问题,所以我们需要处理一些事件来插入 mask 。这个简单的代码为页面上的所有菜单添加了掩码。不是一个完整的解决方案,但是显示了方法:

$('.ui-button').click(function() {
     $('.ui-menu').append("<iframe class='ie-fix' src='about:blank'></iframe>" ); 
});
   

理想情况下,我们只需要更新相应的菜单,但我需要更深入地挖掘 jQuery 的源代码才能实现这一点,稍后会尝试解决。

JS Fiddle有完整的例子

关于javascript - 嵌入式对象后面的 jquery 组合框(仅限 IE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760079/

相关文章:

javascript - 在 cakephp 中重新渲染元素 View 后,如何重新绑定(bind) javascript 事件

html - 将 HTML 网站导出为 Scorm 兼容

javascript - react : Passing an object to state

javascript - 如何在 React 中将变量从一个方法传递到另一个方法

javascript - CORS 同步请求在 Firefox 中不起作用

html - 如何将粘性定位元素移出父 div?

javascript - 在 jquery 问题中设置值

javascript - 在 javascript 中调用自定义函数而不是 getfullyear()

javascript - 动态创建的输入按钮被 Tab 键跳过...如何设置 tabindex

javascript - 以编程方式取消选中复选框不会更新 Angular 模型