页面的渲染模式所引起的问题
来源:互联网 发布:淘宝联盟不让推广了 编辑:程序博客网 时间:2024/05/21 06:55
窗体元素是指页面上有边框的元素控件,随之带来的是宽高距左距上等属性
最大的窗体元素是document.documentElement,它表示文档的显示的所有区域。
其后为document.body它表示控件元素显示的区域。
一般来说document.documentElement与document.body会有填充padding几个像素,以达到一些显示效果。
页面初加载时有渲染上的区别,用document.compatMode表示:
* 如果页面声明了DOCTYPE那么采用document.compatMode=="CSS1Compat"为 Standards Mode标准模式
对于标准模式在初加载时就已经可以使用document.documentElement窗体。
* 如果页面没声明DOCTYPE那么采用Quirks Mode快捷模式
对于快捷方式在初加载时仍不能使用document.documentElement,直至页面加载结束
另外不论是何种渲染模式,document.body只能在页面加载结束之后有效。
以下是IE与FF的测试:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录页面</title>
<script>
alert("documentElement1:"+document.documentElement.clientHeight);
alert('body1:'+document.body.clientHeight);
</script>
<s:head/>
</head>
<body>
。。。。。。。<br>。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。。。。。。<br>
。。。。。。。<br>。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。。。。。。<br>
。。。。。。。<br>。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。。。。。。<br>
。。。。。。。<br>。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。。。。。。<br>
。。。。。。。<br>。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。。。。。。<br>
。。。。。。。<br>。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。<br>。。。。。。。。。。。。。。。。。<br>
</body>
<script>
alert("documentElement2:"+document.documentElement.clientHeight);
alert('body2:'+document.body.clientHeight);
</script>
</html>
说明:documentElement1与body1是初加载是调用,documentElement2与body2是页面加载结束时调用
第一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
去掉为快捷模式渲染,加入为标准模式渲染。
值得一提的是documentElement1与body1的交换执行顺序时,documentElement1不会被执行,这是因为body1打印出错之后忽略下面的语句
总结:由于document.documentElement与document.body存在不可靠性(不容易得知数据何时存在),所以对于页面加载是一个效果,我们建议
此类的js代码应写在页面加载完毕之后执行,如上例的</body>之后,或onload,或css中。
- 页面的渲染模式所引起的问题
- 线程的并发所引起的问题
- 野指针所引起的问题
- 野指针所引起的问题
- jsessionid所引起的问题和解决
- jsessionid所引起的问题 和解决
- jsessionid所引起的问题 和解决
- powershell 的版本所引起的加载 FSharp 编译器问题
- CreateThread 创建线程所引起的内存泄漏的问题
- js 下拉框change事件变化所引起的问题
- url中的jsessionid所引起的问题和解决
- Spring MVC中jsessionid所引起的问题 和解决
- 大图片所引起的内存问题(oom):
- 由backgroud所引起的视觉大小问题。
- xcode 添加ffmpeg所引起的编译问题
- lambda 函数所引起的闭包问题
- express的多重页面渲染问题
- 从e所引起的
- 1-2-5组合问题的最高效完整算法
- jquery框架获得常见的几个选择表单元素(select,radio,checkbox)值的方法:
- windows系统下安装linux系统(fedora12)
- 谁知道NMEA怎么下载啊
- 更新linux gcc版本到gcc 4.4.2
- 页面的渲染模式所引起的问题
- 在RFT中发送键盘按键 - inputChars vs. inputkeys
- GRANT 给存储过程赋权限
- 卖猪男
- java小结
- J2ME开发模拟器KEmulator简介及使用
- _stdcall 与 _cdecl 的区别
- HelloWorld
- 阿拉擦擦呀 甩葱歌 图铃