首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Javascript获取各种浏览器显见窗口大小

2012-11-23 
Javascript获取各种浏览器可见窗口大小呼呼,搞了大半天,总算弄明白了为何用document.body.clientHeight,do

Javascript获取各种浏览器可见窗口大小
呼呼,搞了大半天,总算弄明白了为何用document.body.clientHeight,document.body.offsetHeight都没有办法获取网页可见区域的正确值,原来罪魁祸首是W3C定义的标准!!在新定义出来的标准下 document.documentElement.clientHeight在IE和火狐里都能获取正确值,下面一篇文章详细介绍了获取各种浏览器可见窗口大小这方面的差别:


在我本地测试当中:
在IE、FireFox、Opera下都可以使用
document.body.clientWidth
document.body.clientHeight
即可获得,很简单,很方便。
而在公司项目当中:
Opera仍然使用
document.body.clientWidth
document.body.clientHeight
可是IE和FireFox则使用
document.documentElement.clientWidth
document.documentElement.clientHeight
原来是W3C的标准在作怪啊
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果在页面中添加这行标记的话

在IE中:
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
在FireFox中:
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
?
在Opera中:
document.body.clientWidth ==> 可见区域宽度
document.body.clientHeight ==> 可见区域高度
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)
而如果没有定义W3C的标准,则
IE为:
document.documentElement.clientWidth ==> 0
document.documentElement.clientHeight ==> 0
FireFox为:
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)
Opera为:
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)

//判断浏览器的类型:var ua = navigator.userAgent.toLowerCase ();var os = new Object();os.isFirefox = ua.indexOf ("gecko") != -1;os.isOpera = ua.indexOf ("opera") != -1;os.isIE = !os.isOpera && ua.indexOf ("msie") != -1;//获取浏览器区域的大小://// getPageScroll()// Returns array with x,y page scroll values.// Core code from - quirksmode.org//function getPageScroll(){ var yScroll; if (self.pageYOffset) {  yScroll = self.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop){  // Explorer 6 Strict  yScroll = document.documentElement.scrollTop; } else if (document.body) {// all other Explorers  yScroll = document.body.scrollTop; } arrayPageScroll = new Array('',yScroll) return arrayPageScroll;} //// getPageSize()// Returns array with page width, height and window width, height// Core code from - quirksmode.org// Edit for Firefox by pHaez//function getPageSize(){  var xScroll, yScroll;  if (window.innerHeight && window.scrollMaxY) {   xScroll = document.body.scrollWidth;  yScroll = window.innerHeight + window.scrollMaxY; } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac  xScroll = document.body.scrollWidth;  yScroll = document.body.scrollHeight; } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari  xScroll = document.body.offsetWidth;  yScroll = document.body.offsetHeight; }  var windowWidth, windowHeight; if (self.innerHeight) { // all except Explorer  windowWidth = self.innerWidth;  windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode  windowWidth = document.documentElement.clientWidth;  windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers  windowWidth = document.body.clientWidth;  windowHeight = document.body.clientHeight; }   // for small pages with total height less then height of the viewport if(yScroll < windowHeight){  pageHeight = windowHeight; } else {  pageHeight = yScroll; } // for small pages with total width less then width of the viewport if(xScroll < windowWidth){   pageWidth = windowWidth; } else {  pageWidth = xScroll; } arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) return arrayPageSize;}
1 楼 祈祷幸福 2011-03-02   如果页面的内容过少。那么body的高度和界面的高度就不会一致吧?。。。

热点排行