`
cdzm5211314
  • 浏览: 8110 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javaScript 计算网页的高与宽

 
阅读更多
标准模式与怪异模式:
       由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别。

    W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。
   
火狐一直工作在标准模式下,但IE(6,7,8)标准模式与怪异模式差别很大,主要体现在对盒子模型的解释上,这个很重要,下面就重点说这个。



那么浏览器究竟该采用哪种模式渲染呢?这就引出的DTD,既是网页的头部声明,浏览器会通过识别DTD而采用相对应的渲染模式:

1. 浏览器要使老旧的网页正常工作,但这部分网页是没有doctype声明的,所以浏览器对没有doctype声明的网页采用quirks mode解析。
2. 对于拥有doctype声明的网页,什么浏览器采用何种模式解析,这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/
3. 对于拥有doctype声明的网页,这里有几条简单的规则可用于判断:对于那些浏览器不能识别的doctype声明,浏览器采用strict mode解析
4. 在doctype声明中,没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析。
5. 可以这么说,在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的。
6. 在ie6中,如果在doctype声明前有一个xml声明(比如:<?xml version="1.0" encoding="iso-8859-1"?>),则采用quirks mode解析。这条规则在ie7中已经移除了。


如何设置为怪异模式:
方法一:在页面项部加 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
我们用Eclipse的HTML模板新建的html页面,自动就有上面东东

方法二:什么也不加。

这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/


如何设置为标准模式:
加入以下任意一种:
HTML4提供了三种DOCTYPE可选择:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML1.0提供了三种DOCTYPE可选择:
(1)过渡型(Transitional )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
(2)严格型(Strict )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
(3)框架型(Frameset )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">


这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/



如何判定现在是标准模式还是怪异模式:

方法一:执行以下代码
alert(window.top.document.compatMode) ;
//BackCompat  表示怪异模式
//CSS1Compat  表示标准模式
方法二:jquery为我们提供的方法,如下:
alert($.boxModel)
alert($.support.boxModel)



IE6,7,8浏览器的标准模式还是怪异模式 盒子模型的 差异
(由于火狐的始终表现的很一致,不种我们操心。所以这里我们重点说IE浏览器)










-------------------------------------------------模态窗口----------------------------------------------------

我们想做一个DIV蒙层,中间放一个iframe,做一个像模态窗口的dialog工具

思路如下:
取出页面 网页可见区域 的宽与高, 进行蒙层,
通过CSS的固定定位属性{position:fixed}来实现,可以让HTML元素脱离文档流固定在浏览器的某个位置,
这样拖动滚动条时, 蒙层不会移动,一直在中心位置。
中心位置放一个iframe,用来显示其它网页,并可以提交表单。

可以用以下代码计算 蒙层的宽与高:
Js代码  收藏代码
//计算窗口的高宽和滚动条的位置 
alert(window.top.document.compatMode) ;//区分怪异模式或标准模式 
var cw = window.top.document.compatMode == "BackCompat" ?window.top.document.body.clientWidth:window.top.document.documentElement.clientWidth;//窗体高度 
var ch = window.top.document.compatMode == "BackCompat" ?window.top.document.body.clientHeight:window.top.document.documentElement.clientHeight;//窗体宽度//必须考虑文本框处于页面边缘处,控件显示不全的问题 
var sw = Math.max(window.top.document.documentElement.scrollLeft, window.top.document.body.scrollLeft);//横向滚动条位置 
var sh = Math.max(window.top.document.documentElement.scrollTop, window.top.document.body.scrollTop);//纵向滚动条位置//考虑滚动的情况          
alert("cw:"+cw+"  ch:"+ch+"  sw:"+sw+"  sh"+sh); 




----------------------------------------------参考 1-----------------------------------------------------

我们先来认识一下有哪些属性可以使用:

scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
scrollHeight: 获取对象的滚动高度。

obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位像素。
obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,整型,单位像素。
obj.offsetWidth 指 obj 控件自身的绝对宽度,不包括因 overflow 而未显示的部分,也就是其实际占据的宽度,整型,单位像素。
obj.offsetHeight 指 obj 控件自身的绝对高度,不包括因 overflow 而未显示的部分,也就是其实际占据的高度,整型,单位像素

event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标

clientWidth  内容可视区域的宽度
clientHeight 内容可视区域的高度
clientTop    内容可视区域相对容器的垂直坐标
clientLeft   内容可视区域相对容器的水平坐标

参考图片:








----------------------------------------------参考 2-----------------------------------------------------

Js代码  收藏代码
var Width_1=document.body.scrollWidth;    //body滚动条总宽   
var Height_1=document.body.scrollHeight;  //body滚动条总高   
   
var Width_2=document.documentElement.scrollWidth;    //documentElement滚动条总宽 
var Height_2=document.documentElement.scrollHeight;  //documentElement滚动条总宽    
 
//------------------------------ 
var Width_3=document.body.clientWidth;   //body网页可见区域宽,滚动条隐藏部分不算      
var Height_3=document.body.clientHeight; //body网页可见区域高,滚动条隐藏部分不算   
   
var Width_4=document.documentElement.clientWidth;   //documentElement网页可见区域宽,滚动条隐藏部分不算    
var Height_4=document.documentElement.clientHeight; //documentElement网页可见区域高,滚动条隐藏部分不算  
 
//------------------------------ 
var Width_5=window.screen.availWidth;  //屏幕可用工作区宽度(用处不大)    
var Height_5=window.screen.availHeight;//屏幕可用工作区高度    
 
//------------------------------ 
var scrollLeft_7=window.top.document.body.scrollLeft;//body水平滚动条位置  
var scrollTop_7=window.top.document.body.scrollTop;//body垂直滚动条位置 
 
var scrollLeft_8=window.top.document.documentElement.scrollLeft;//documentElement水平滚动条位置 
var scrollTop_8=window.top.document.documentElement.scrollTop;//documentElement垂直滚动条位置 
   
alert(" body滚动条总宽:"+Width_1+",body滚动条总高:"+Height_1+    
    ",\n documentElement滚动条总宽:"+Width_2+",documentElement滚动条总高:"+Height_2+   
    ",\n"+  
    "\n body网页可见区域宽:"+Width_3+",body网页可见区域高:"+Height_3+    
    ",\n documentElement网页可见区域宽:"+ Width_4+",documentElement网页可见区域高:"+Height_4+ 
    ",\n"+    
    "\n 屏幕可用工作区宽度:"+Width_5+", 屏幕可用工作区高度:"+Height_5+ 
    ",\n"+ 
    "\n body水平滚动条位置:"+scrollLeft_7+",body垂直滚动条位置:"+scrollTop_7+ 
    ",\n documentElement水平滚动条位置:"+scrollLeft_8+",documentElement垂直滚动条位置:"+scrollTop_8 
);           
 


(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)


下面是从w3school查到的,说的不是很详细

根节点
有两种特殊的文档属性可用来访问根节点:

document.documentElement
document.body
第一个属性可返回存在于 XML 以及 HTML 文档中的文档根节点。

第二个属性是对 HTML 页面的特殊扩展,提供了对 <body> 标签的直接访问。

http://www.w3school.com.cn/htmldom/dom_nodes_access.asp
分享到:
评论

相关推荐

    程序天下:JavaScript实例自学手册

    13.17 计算网页停留时间 13.18 记录页面的修改时间 13.19 将日期转换为字符串的方法 13.20 检测是否是闰年 13.21 年份加减函数 13.22 精确到千分之一秒 13.23 离开某天的时间 13.24 判断两个字符串日期的大小 13.25 ...

    《程序天下:JavaScript实例自学手册》光盘源码

    13.17 计算网页停留时间 13.18 记录页面的修改时间 13.19 将日期转换为字符串的方法 13.20 检测是否是闰年 13.21 年份加减函数 13.22 精确到千分之一秒 13.23 离开某天的时间 13.24 判断两个字符串日期的大小 13.25 ...

    javascript函数的解释

    javascript函数的解释,解释了具体函数的功能,一、函数JavaScript函数集合 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document-&gt;html-&gt;(head,body) 4.一个浏览器窗口中的DOM顺序是:...

    javascript mm与px互相转换

    javascript中单位的转换,不改变原始大小,例如:mm单位转换为px单位,可自行扩展

    html5宽屏的运动鞋子品牌商城模板.zip

    JavaScript,是一种轻量级的解释型编程语言; jQuery,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互; Bootstrap 是快速开发 Web 应用程序的前端工具包。它是一个 CSS...

    网页FLASH播放器代码

    &lt;script language="JavaScript"&gt; var movie,timer,step,total,state=null,delay=100 function init(){//在 Flash 加载完成后初始化相关变量的函数 /*捕获 id 为 movie 的对象,若要兼容NS, 可用 window....

    web网页按比例显示图片实现原理及js代码

    在动态站点上经常需要上传自己的图片,而这些图片的大小是未知的,在显示成缩略图的时候必须进行按比例的缩放才能美观地显示。... 该网站需要上传高尔夫...这个方法明显的缺点是显示每张图片都要在服务器读取数据并计算

    js使用小技巧

    s += " 网页可见区域高:"+ document.body.offsetHeight +" (包括边线的宽)"; s += " 网页正文全文宽:"+ document.body.scrollWidth; s += " 网页正文全文高:"+ document.body.scrollHeight; s += " 网页被卷去...

    JS根据浏览器窗口大小实时动态改变网页文字大小的方法

    本文实例讲述了JS根据浏览器窗口大小实时动态改变网页文字大小的方法。分享给大家供大家参考,具体如下: 目前,有了css3的rem,给我们的移动端开发带来了前所未有的改变,使得我们的开发更容易,更易兼容很多设备,...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...

    java版斗地主源码-SkillTree:我的IT学习方式

     我大学前两年学了c,java,c#,汇编,安卓,ASP---计算机组成原理,数据结构,计算机网络---UML,XML,数据库---微信小程序,Jquery,bootstrap,JavaScript,CSS,Html。 io=&gt;inputoutput: 基础——平行四边形 op=&gt;...

    html入门到放弃笔记

    如 :网页版百度,网页版 QQ,网页版 京东,... ... 3、WEB 1、什么是WEB WEB,是基于Internet上的一种应用程序(网页应用程序) WEB页面,简称WEB页(网页),就是保存在服务器端上的一个具体的页面( **.html / **...

    IntelliGrid表格控件(Web Grid)V1.0 For Asp.Net2.0 3.5

    避免了列项目多的情况下,网页显示过宽的问题。(图A) ★支持金额、数字的自定义格式化功能。(图A-数量、单价,金额,金额美元) ★支持货币符号的自定义(如:$,¥)。(图A-金额,金额美元) ★支持列的公式...

    notes:我的笔记-PWA笔记本

    网页 Django的 烧瓶 ASP 统一 超宽工作计划 WPF Xamarin 安卓 扑 PWA 扩展名 物联网 数据 Redis neo4j 领域 分布式数据管理 信息系统 弹性搜索 Hadoop 数据科学 统计数据 机器学习 代码 前处理 分类 聚类 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    正则表达式30分钟入门教程

    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 很可能你使用过Windows/Dos下用于文件查找的...

Global site tag (gtag.js) - Google Analytics