日期:2014-05-16  浏览次数:20397 次

document.body.clientWidth的奇怪问题
(1)、当在 <html> 前加:
<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN "
"http://www.w3.org/TR/html4/loose.dtd ">

如果页面的margin大于0,则document.body.clientWidth的值就比margin=0时document.body.clientWidth的值小20

(2)、而当 <html> 前没有
<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN "
"http://www.w3.org/TR/html4/loose.dtd ">

无论margin的值为多少document.body.clientWidth的值都一样大

请问如何使情况(1)的document.body.clientWidth值和情况(2)一样。非常感谢!

------解决方案--------------------
别加那个东西就行啦~``反正你的网页也达不到那个标准~~~~加了有什么意义?
------解决方案--------------------
帮顶。建议还是取了吧。
------解决方案--------------------
document.documentElement.clientWidth
页面上不是只有BODY的
------解决方案--------------------
var MzElement={}; //节选自 jsframework
MzElement.body=function()
{
var W, H, SL, ST;
var w=window, d=document, dd=d.documentElement;

if(w.innerWidth) W=w.innerWidth;
else if(dd&&dd.clientWidth) W=dd.clientWidth;
else if(d.body) W=d.body.clientWidth;

if(w.innerHeight) H=w.innerHeight;
else if(dd&&dd.clientHeight) H=dd.clientHeight;
else if(d.body) H=d.body.clientHeight;

if(w.pageXOffset) SL=w.pageXOffset;
else if(dd&&dd.scrollLeft) SL=dd.scrollLeft;
else if(d.body) SL=d.body.scrollLeft;

if(w.pageYOffset) ST=w.pageYOffset;
else if(dd&&dd.scrollTop) ST=dd.scrollTop;
else if(d.body) ST=d.body.scrollTop;

return { "scrollTop ":ST, "scrollLeft ":SL, "clientWidth ":W, "clientHeight ":H};
}

var body = MzElement.body();
alert(body.clientWidth);