DOCTYPE对js影响的一个实例

2007-12-24 22:10 来源: 作者: 网友评论 0 条 浏览次数 50

 在网页中使用了,符合比较宽松的 DOCTYPE 声明。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

页面中很多效果运行正常,有一个js文件是打开一个新的层级窗口,在ie下正常,但是在firfox下面页面无法按照载入宽度和高度打开。后来发现如果取消 DOCTYPE 声明,就可以得到正常的返回值,查询了一下,看到上一篇文章讲过,这个声明要求所有的宽度和高度必须指定 px ,当使用无px的高度和宽度值时,就不会得到正常的返回了。据此修改程序,将所有需要使用高度或者宽度的地方加上xp ,比如:

    this.set = function(_oAttr, _sVal){
        var oShadow = $('dialogBoxShadow');
        var oDialog = $('dialogBox');
        var oHeight = $('dialogHeight');
        var oIframe = $('dialogBoxIframe');
        if(_sVal != ''){
            switch(_oAttr){
                case 'title':
                    $('dialogBoxTitle').innerHTML = _sVal;
                    title = _sVal;
                    break;
                case 'width':
                    oDialog['style']['width'] = _sVal + 'px';
                    width = _sVal;
                    break;
                case 'height':
                    oHeight['style']['height'] = _sVal + 'px';
                    height = _sVal;
                    break;
                case 'src':
                    if(parseInt(_sVal) > 0){
                        $('dialogBoxFace') ? $('dialogBoxFace').src = path + _sVal + '.gif' : function(){};
                    }else{
                        $('dialogBoxFace') ? $('dialogBoxFace').src = _sVal : function(){};
                    }
                    src = _sVal;
                    break;
            }
        }

firfox默认,如果所给的 _sVal 值不是一个有效的带px 的值,它不会进行置换,增加  +'px' 之后,可以成功得到置换的值了。

另外,这个声明对 document.body 的要求也比较高,常常使js无法等到有效的层在窗口内的居中位置,增加以下函数后,解决此问题。

function ietruebody(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

 

上一篇:连串英文自动换行..    下一篇:DOCTYPE对页面css..

相关主题:

网友评论