昨天给添加了在线测试效果!打开后发现JS弹出框位置和效果不对!但是我在我本地测试是没问题的!仔细检查后发现原来是由于博客园的HTML文档类型和我的不一样。

我的是:<!DOCTYPE html>

博客园:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

关于HTML文档类型参考:http://i.wanz.im/2010/05/28/why_doctype_html/

检查发现JS在获取当前页面可视大小,和页面位置有差别!
在页面包含一个2000*2000的DIV是IE和Chrome在不同HTML文档类型测试整理数据如下:
标准:<!DOCTYPE html>
特殊:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

当HTML中未添加HTML文档类型时,默认为特殊模式!

Chrome标准 Chrome特殊 IE标准 IE特殊
document.body.clientTop; 0 0 0 2
document.body.clientLeft; 0 0 0 2
document.body.clientWidth; 473 473 471 471
document.body.clientHeight; 2000 625 2000 604
document.body.scrollTop; 224 289 0 255
document.body.scrollLeft; 315 388 0 278
document.body.scrollWidth; 2005 2005 2005 2010
document.body.scrollHeight; 2010 2010 2000 2005
document.body.offsetTop; 0 0 0 0
document.body.offsetLeft; 0 0 0 0
document.body.offsetWidth; 473 473 471 492
document.body.offsetHeight; 2000 2000 2000 625
document.documentElement.clientTop; 0 0 0 0
document.documentElement.clientLeft; 0 0 0 0
document.documentElement.clientWidth; 473 473 471 0
document.documentElement.clientHeight; 625 2010 604 0
document.documentElement.scrollTop; 0 0 199 0
document.documentElement.scrollLeft; 0 0 241 0
document.documentElement.scrollWidth; 2005 2005 2005 492
document.documentElement.scrollHeight; 2010 2010 2010 625
document.documentElement.offsetTop; 0 0 0 0
document.documentElement.offsetLeft; 0 0 0 0
document.documentElement.offsetWidth; 473 473 492 492
document.documentElement.offsetHeight; 2010 2010 625 625

分析:

页面总宽度:document.body.scrollWidth;
页面总高度:document.body.scrollHeight;
Chrome页面位置:document.body.scrollTop; document.body.scrollLeft;
Chrome标准页面可视区域:document.documentElement.clientWidth; document.documentElement.clientHeight;
Chrome特殊页面可视区域:document.body.clientWidth; document.body.clientHeight;
IE标准页面位置:document.documentElement.scrollTop; document.documentElement.scrollLeft;
IE标准页面可视区域:document.documentElement.clientWidth; document.documentElement.clientHeight;
IE特殊页面位置:document.body.scrollTop; document.body.scrollLeft;
IE特殊页面可视区域:document.body.clientWidth; document.body.clientHeight;
JS代码如下:

 
function getSize() {
var obj = new Object();
obj.allWidth = document.body.scrollWidth;
obj.allHeight = document.body.scrollHeight;
if (-[1, ]) { //非IE
obj.top = document.body.scrollTop;
obj.left = document.body.scrollLeft;
if (document.compatMode === 'CSS1Compat') {
obj.width = document.documentElement.clientWidth;
obj.height = document.documentElement.clientHeight;
}
else {
obj.width = document.body.clientWidth;
obj.height = document.body.clientHeight;
}
} else {
if (document.compatMode === 'CSS1Compat') {
obj.width = document.documentElement.clientWidth;
obj.height = document.documentElement.clientHeight;
obj.top = document.documentElement.scrollTop;
obj.left = document.documentElement.scrollLeft;
}
else {
obj.width = document.body.clientWidth;
obj.height = document.body.clientHeight;
obj.top = document.body.scrollTop;
obj.left = document.body.scrollLeft;
}
}
alert(obj.top);
alert(obj.left);
alert(obj.width);
alert(obj.height);
return obj;
}

注:发现博客园首页的HTML文档类型为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
为什么和随笔展示页不一样呢?

欢迎转载,转载请注明:转载自[ http://www.cnblogs.com/zjfree/ ]

最新资讯
BAT区块链往事

BAT区块链往事

生存还是死亡,这个问题终究还是有了最新的注解。
7天融资1.5亿,子弹短信将向何处去?

7天融资1.5亿,子弹短信

“子弹短信”到底是什么?有何独特之处?
趣店痛失强援的背后:“傍大款”的奖与罚

趣店痛失强援的背后:“

抱着巨头大腿上市后的创业公司也给自己的命运埋下了隐
曾经在路边下棋的大爷们,将撑起互联网流量的下半场

曾经在路边下棋的大爷

5亿金山,何人来采?
苹果为乔布斯剧院外观设计申请专利

苹果为乔布斯剧院外观

这一设计看似简单实则不然:一个没有支撑柱的环形玻璃,以
高管内讧、性骚扰质控频发:创始人对Tinder向左滑

高管内讧、性骚扰质控

不喜欢的向左滑,喜欢的向右滑。
最新文章
详解前端在html页面之间传递参数的方法

详解前端在html页面之

这篇文章主要介绍了详解前端在html页面之间传递参数的
详解HTML onfocus获得焦点和onblur失去焦点事件

详解HTML onfocus获得

这篇文章主要介绍了详解HTML onfocus获得焦点和onblur
HTML如何在两个div标签中间画一条竖线

HTML如何在两个div标

最近项目经理交小编一个活儿,需要在界面当中画一条竖线
多种实例解析HTML表单form的使用方法

多种实例解析HTML表单

这篇文章主要以多种实例的方式帮助大家了解分析HTML表
Html+CSS绘制三角形图标

Html+CSS绘制三角形图

这篇文章主要为大家详细介绍了Html+CSS绘制三角形图标
HTML的checkbox和radio样式美化的简单实例

HTML的checkbox和radi

下面小编就为大家带来一篇HTML的checkbox和radio样式