@ 1
document.compatMode
「CSS1Compat」 是指 「標準模式」 和 「BackCompat」 是指 「怪異模式」。
@一個HTML元素的2
offsetWidth屬性給出其在屏幕上的寬度,以像素爲單位。
<div id="mydiv" style="width: 250px; padding-left: 1px; border: 2px black solid">hello</div>
document.getElementById('mydiv').offsetWidth
//255 (standards) 250 (quirks)
用於補償IE怪異模式的寬度必須檢查繪製模式,然後添加邊界,並填充到寬度A的功能;
function compensateWidth(el, targetWidth){
var removeUnit = function(str){
if(str.indexOf('px')){
return str.replace('px','') * 1;
}
else { //because won't work for other units... one may wish to implement
return 0;
}
}
if(document.compatMode && document.compatMode=="BackCompat"){
if(targetWidth && el.offsetWidth < targetWidth){
el.style.width = targetWidth;
}
else if (el.currentStyle){
var borders = removeUnit(el.currentStyle['borderLeftWidth']) + removeUnit(el.currentStyle['borderRightWidth']);
var paddings = removeUnit(el.currentStyle['paddingLeft']) + removeUnit(el.currentStyle['paddingRight']);
el.style.width = el.offsetWidth + borders + paddings +'px';
}
}
}
現在有兩種方式來使用它:
var div = document.getElementById('mydiv')
// will try to calculate target width, but won't be able to work with units other than px
compensateWidth(div);
//if you know what the width should be in standards mode
compensateWidth(div, 254);
哪裏的currentStyle屬性從何而來?我試圖在ff中,它似乎是未定義的 – christoff 2008-10-22 05:14:18