整治javascript--IE、firefox篇

本文解决IE浏览器下select标签被遮挡、PNG图片显示异常及overflow属性应用问题,提供JavaScript兼容性解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.select z-index的div IE下面zorder的问题
第三步中,页面上有select标签(饰品),如果有新的div,比如“使用帮助”、“预览”thickbox,新的弹出div是基于z-index很大,实现效果,但是在ie会出现问题。因为select不会藏在z-index高于他的div下面,所以实现方案:
var useScrewedZOderHack = false;
if(BrowserDetect.browser == "Explorer") {
    useScrewedZOderHack = true;
}
function doZOrderHack() {
    if(!useScrewedZOderHack) {
        return;
    }
    hHiddenFormElements = [];
    var selects = document.getElementsByTagName("select");
    for(var i=0;i<selects.length;i++) {
        var sel = selects[i];
        if(sel.style.display != 'none') {
            hHiddenFormElements.push(sel);
            sel.style.display = 'none';
        }
    }
}
function rollbackZOrderHack() {
    if(!useScrewedZOderHack) {
        return;
    }
    for(var i=0;i<hHiddenFormElements.length;i++) {
        var sel = hHiddenFormElements[i];
        sel.style.display = '';
    }
}
BrowserDetect.js:http://www.quirksmode.org/js/detect.html

2.透明背景png图片在ff下面正常,ie下面不正常的问题
ff能正确显示带Alpha通道的PNG图片. 后来才发现其实IE也可以做到.
IE5.5的滤镜 progid:DXImageTransform.Microsoft.AlphaImageLoader(src=图片地址, sizingmethod=scale) 可以用来读取透明的PNG图象.
var useAlphaHack = false;
if((BrowserDetect.browser == "Explorer")&&(BrowserDetect.version < 7.0)&&(BrowserDetect.version >= 5.5)) {
    useAlphaHack = true;
}

3.属性overflow的问题
for some reason the border width gets included in the offset when overflow=hidden
overflow 标签
  参考语法:
  overflow : visible | auto | hidden | scroll
  参数:
  visible :  不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
  auto :  此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
  hidden :  不显示超过对象尺寸的内容
  scroll :  总是显示滚动条

var overflowHack = true;
/*
if((BrowserDetect.browser == "Explorer")&&(BrowserDetect.version < 7.0)&&(BrowserDetect.version >= 5.5)) {
    overflowHack = false;
}
*/
recalibrateCanvas: function() {
        var _this = this;
        window.setTimeout( function() {
                //var pos = Position.cumulativeOffset(_this.canvas);
                var pos = Position.cumulativeOffset(_this.sb.editorPane);
                if(overflowHack) {
                    _this.canvas_x = pos[0] + 5;
                    _this.canvas_y = pos[1] + 5;
                } else {
                    _this.canvas_x = pos[0];
                    _this.canvas_y = pos[1];
                }
                _this.repositionManagePanel();
                //reposition all the bling...
                for(key in _this.bling) {
                    if(_this.bling[key]!=null) {
                        _this.bling[key].setSize();
                    }
                }
                
        }, 100);
        
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值