- 浏览: 7148858 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (397)
- 架构研究 (44)
- 网络协议-TCP/HTTP (20)
- SPRING (23)
- HIBERNATE 3 (30)
- STRUTS 2 (20)
- Java/J2se (25)
- Servlet/Jsp (9)
- 开发工具IDE (10)
- WEB服务器 (17)
- 前端--Java Script (33)
- 前端--CSS (7)
- OS--Linux (31)
- OS--MAC OS (19)
- MySQL数据库 (19)
- Oracle数据库 (11)
- 项目管理工具 (12)
- 数据报表技术 (4)
- 图像处理技术 (10)
- 其它综合技术 (13)
- 权限管理 (1)
- MyBatis (1)
- 网络安全 (6)
- IO (21)
- PostgreSQL (2)
- Eclipse RCP (1)
- GWT (1)
- 算法 (3)
- Storm (2)
- zookeeper (3)
- 消息 (1)
最新评论
-
bukebuhao:
已解决,打开文件太多。ulimit -n 上次临时生效后再次s ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
bukebuhao:
ds重启后启动不了。报错信息如下,请大神帮助[2018-08- ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
墨上清:
感谢,看完有了一个完整的知识网络。
Spring MVC 教程,快速入门,深入分析 -
云卷云舒灬:
谢谢,学到很多
Spring MVC 教程,快速入门,深入分析 -
luozhy:
非常感谢非常感谢
Project Web Access ActiveX控件 安装
标准模式与怪异模式:
由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在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,用来显示其它网页,并可以提交表单。
可以用以下代码计算 蒙层的宽与高:
//计算窗口的高宽和滚动条的位置 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-----------------------------------------------------
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
收集整理于互联网
参考:
http://cavonchen.iteye.com/blog/738423
http://hsivonen.iki.fi/doctype/
发表评论
-
HttpServletRequestWrapper 用法
2014-02-14 22:15 14658Servlet规范中所引入的filter令人心动不已,因为它引 ... -
javascript常用 正则
2010-06-14 16:42 2135javascript身份证号验证 正则 //这个可以 ... -
iframe高度自适应、载入完成事件
2009-09-14 17:40 8693高度自适应 ------------------------ ... -
12 ADS.js库(第二版本)
2009-05-11 10:07 3325前面的 第11篇文章 用到了这个版本的ADS.js / ... -
11 自己的JS调试工具 myLogger()对象
2009-05-11 09:58 2210/** * @author elf */ funct ... -
10 javaScript的异常处理 try{ }catch(theException){ }
2009-05-03 15:04 1799例子: try { //一个异常在这里产生 ... -
9 通过call()和apply()重新定义执行环境
2009-05-03 15:02 1622通过前面学习,已知道this对象的环境是如何随着函数被赋值给其 ... -
8 this是什么
2009-04-26 14:55 1926this在javascript中 情况是不同与java c+ ... -
7 编写类
2009-04-25 20:19 1425以前写过类似的例子, 见http://elf8848.itey ... -
6 继承
2009-04-25 19:45 1541javascript 中没有从一个类扩展出另一个类的底层类结构 ... -
5 迭代对象
2009-04-25 19:23 1381我们常用到for循环 var list=[5,6,7, ... -
4 没有重载
2009-04-25 19:11 1533关于"重载"的概念, 就不用说了. ... -
3 创建自己的库 ADS.js(第一版本)
2009-04-25 18:43 2952伪命名空间的使用. 在javascript2.0广泛使 ... -
2 不要检测版本,要检测对象
2009-04-25 13:09 1477为了编写能兼容各种浏览器的 javascript ,我们可能首 ... -
1 在html中包含javascript
2009-04-25 11:10 5474方法一: 通过外部源文件来包含javascript,这是最正 ... -
常用的JS-备份
2009-03-20 08:46 2637我常用 的HTML 类型<!DOCTYPE html ... -
JS 闭包
2009-03-15 18:32 3595function outerFun() { ... -
DOM 删除节点
2009-03-13 17:48 3328removeChild() 方法删除指定节点。 ... -
如何使用定时器settimeout、setInterval执行能传递参数的函数
2009-03-11 19:03 15421无论是window.setTimeout还是window.se ... -
JavaScript函数参数个数
2009-03-11 18:51 3952<html><head><met ...
相关推荐
javascript获取浏览器临时目录javascript获取浏览器临时目录javascript获取浏览器临时目录javascript获取浏览器临时目录
很多场景下会需要获取当前网页的宽高来达到一些效果,但是获取网页的宽高这里面还是有一点(hen duo)坑的,这里我进行了总结和详解,若有补充欢迎评论补充~ 这种方式只支持IE9以及以上版本的浏览器 网页高度,...
能够识别浏览器是否处于隐身模式
这是一个JavaScript获取浏览器参数的方法,
JavaScript设计模式与开发实践.pdf
应同学邀请,演示如何使用 PyQt5 内嵌浏览器浏览网页,并注入 Javascript 脚本实现自动化操作。 下面测试的是一个廉价机票预订网站(http://www.flyscoot.com/),关键点如下 使用 QWebEngineView 加载网页,并显示...
传统与现代继承模式的比较 使用类式继承时的预期结果 类式继承模式#1——默认模式 类式继承模式#2——借用构造函数 类式继承模式#3——借用和设置原型 类式继承模式#4——共享原型 类式继承模式#5——...
各主流浏览器如何禁用javascript脚本
Javascript浏览器和屏幕各种高度宽度.pngJavascript浏览器和屏幕各种高度宽度.png
JavaScript实现浏览器网页自动滚动并点击的示例代码 1. 打开浏览器控制台窗口 JavaScript通常是作为开发Web页面的脚本语言,本文介绍的JavaScript代码均运行在指定网站的控制台窗口。一般浏览器的开发者窗口都...
money.js 是一个货币转换的微型 javascript 库,可在 nodeJS 和浏览器中使用
JavaScript 获取浏览器的显示区域大小信息.txt JavaScript 获取浏览器的显示区域大小信息.txt JavaScript 获取浏览器的显示区域大小信息.txt JavaScript 获取浏览器的显示区域大小信息.txt
图片浏览器——JS
检测浏览器支持javascript.rar检测浏览器支持javascript.rar检测浏览器支持javascript.rar检测浏览器支持javascript.rar检测浏览器支持javascript.rar检测浏览器支持javascript.rar
javascript实现禁用浏览器后退按钮
主要介绍了JS根据浏览器窗口大小实时动态改变网页文字大小的方法,涉及JavaScript针对页面宽高的动态获取与元素样式动态运算的相关技巧,需要的朋友可以参考下
JavaScript判断各种浏览器代码
javascript获取浏览器相关属性(判断浏览器类型,收藏本站等)
如何用JavaScript检测当前浏览器是无头浏览器 目录 什么是无头浏览器(headless browser)?为什么叫“无头”浏览器?为什么要检测无头浏览器?检测无头浏览器User agent插件 Plugins语言WebGL浏览器特征加载失败的...