在网页中使用了,符合比较宽松的 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;
}
