昨天给添加了在线测试效果!打开后发现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/ ]

最新资讯
苹果手机被诉输入法侵权,遭索赔120万

苹果手机被诉输入法侵

近日,北京知产法(tian)院(ping)受理了北京九宫混音呈列公司诉苹果电
王兴的持久战

王兴的持久战

美团的上市更像是一场持久战的中途小胜。
王兴“简史”:从饭否到美团,他如何走到今天

王兴“简史”:从饭否到

创业前期屡战屡败,创建美团后战争不断,王兴绝对算不上创
链家 VS 58:中小中介的民心向背将决定战争走向

链家 VS 58:中小中介的

“链家一家就占据了二手房市场10%以上的份额,排在其后
世界杯爆冷真相:这项技术九改判罚!帮西班牙起死回生

世界杯爆冷真相:这项技

视频助理裁判(Video Assistant Referee,VAR)是指俄罗斯世
数字货币理财兴起:数百玩家进场,要夺下P2P的疆土

数字货币理财兴起:数百

数字货币的理财市场,正在悄然崛起。
最新文章
HTML如何在两个div标签中间画一条竖线

HTML如何在两个div标

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

多种实例解析HTML表单

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

Html+CSS绘制三角形图

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

HTML的checkbox和radi

下面小编就为大家带来一篇HTML的checkbox和radio样式
浅谈html标签的显示模式(块级标签,行内标签,行内块标签)

浅谈html标签的显示模

下面小编就为大家带来一篇浅谈html标签的显示模式(块
html+css3太阳系行星运转动画效果的实现代码

html+css3太阳系行星

下面小编就为大家带来一篇html+css3太阳系行星运转动