iframe shimming 或 ie6(及以下)选择 z-index 错误

IT技术 javascript internet-explorer-6 shim
2021-03-02 19:39:42

嗯,我不确定是否有人遇到过这个问题
,IE6 上有一个简短的描述,任何<select>对象都会显示在任何其他项目上,甚至是 div 的......这意味着如果你有一个花哨的 javascript 效果来显示一个应该在顶部的 div一切(例如:灯箱,多框等) onclick 某个元素并且该 div 与<select>您的div 重叠显示,好像它在<select>[在这种情况下,最大和最小 z-index 不起作用]

我试过谷歌搜索并找到了 iframe shim 解决方案,
但我想要一些非常干净的替代方案,或者更好但有没有人找到更好的解决方案?因为使用 iframes 的方法使用大约 130mb 的内存可能会减慢穷人的机器

6个回答

您不必隐藏每个select使用循环。您只需要一个 CSS 规则,例如:

* html .hideSelects select { visibility: hidden; }

以及以下 JavaScript:

//hide:
document.body.className +=' hideSelects'

//show:
document.body.className = document.body.className.replace(' hideSelects', '');

(或者,您可以使用您最喜欢的addClass/removeClass实现)。

jquery 有一个名为bgiframe的插件,它使 iframe 方法很容易实现。

就个人而言,作为 Web 开发人员,我已经不再关心 IE6 中的用户体验了。我会让它渲染得尽可能接近“正确”,并确保它可以正常工作,但就速度而言,太糟糕了。他们可以升级。IE7(尽管与其他所有浏览器相比仍然很慢)已经推出 2 年(几乎到今天!)。IE8 即将推出。Firefox 适用于所有平台。Safari 也是一种选择(而且速度超快)。Opera 适用于大多数/所有平台。

IE6 发布于 7 年前。恕我直言,除了懒惰的用户和无能的 IT 部门(或者如果您是 Web 开发人员)之外,没有理由继续使用它。

我很想有将 IE6 扔到垃圾桶的自由,但我不能。大多数内部使用的应用程序设计为仅支持 IE6...所以它们既不支持 IE7 也不支持更好的浏览器...我在这里宣传 stoplivinginthepast.com,但它不在我的域中:|
2021-05-04 19:39:42
感谢您的 bgiframe 链接。这为我省去了很多麻烦。:-)
2021-05-07 19:39:42

如果有人感兴趣,这里有一些 IE 填充代码。

* html .shimmed {
    _azimuth: expression(
        this.shimmed = this.shimmed || 'shimmed:'+this.insertAdjacentHTML('beforeBegin','<iframe style="filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);position:absolute;top:0px;left:0px;width:100%;height:100%" frameBorder=0 scrolling=no src="javascript:false;document.write('+"''"+');"></iframe>'),
        'inherit');
}

参考:这个要点来自微妙梯度和这个帖子由 Zach Leatherman

在 IE7 之前,下拉列表是一个“窗口化”控件,这意味着它直接由 Windows 呈现为控件,而不是浏览器合成它。因此,它不可能支持针对其他合成控件的 z 索引。

为了出现在 DDL 上,您必须使用另一个窗口控件,如 IFRAME。您还可以使用一个鲜为人知的仅 IE 功能,称为 window.createPopup(),它本质上是一个无边框弹出窗口。它有一些限制,比如不可阻挡的点击,但如果你正在构建一个悬停菜单系统,它们实际上是有帮助的。

我认为是 Windows XP SP2 添加了一个额外的安全功能,称为“允许没有大小或位置限制的脚本启动窗口”。这在所有 IE 区域中默认设置为禁用。这会导致您失去对 createPopup 窗口的控制。强烈建议不要使用此功能。我认为 IE 团队添加此功能是因为网络钓鱼站点使用 createPopup 窗口来隐藏真实地址栏。
2021-04-29 19:39:42

使用 jQuery可以在http://docs.jquery.com/Plugins/bgiframe上找到解决那个烦人的 IE 错误的最简单和最优雅的解决方案

在尝试了 2 天使其与 WebSphere Portal/Portal Applications 一起工作后,我得出了这个结论,其中一切都是动态的,包括飞越菜单。