DOCTYPE对$(window).height()取值的影响

前言:公司项目需要用到一个弹框垂直居中,网上类似的垂直居中弹出层大同小异,因为项目是基于Jquery 下的,所以用$(window).height()-layer.height())/2 +$(document).scrollTop()取得垂直的位移。测了各种浏览器没问题,后台人员移值到项目中后,出问题了,当页面超出一屏时,在 chrome和FF下,弹出框不是在当前屏的垂直居中,而是相对于整个网页的居中。

查阅各方资料,所有结论都指出:
1.窗口高度,$(window).height()
2.文档高度,$(document).height()
3.被卷起的高度,$(window).scrollTop()

找到原因:而后,发现后台人员的页面没有设DOCTYPE,所以在chrome中,$(window).height()=$(document).height(),$(document).height()表示在网页实际内容高度没有满一屏时表示整个窗口的高度(窗口放大缩小时这个值会变化),页当超过一屏时表示为整个网页内容的实际高度,这点没有异议,跟设不设DOCTYPE没有影响。但是:$(window).height()在DOCTYPE为transitional.dtd时无论网页内容实际高度超不超出满屏情况下,都等于是整个窗口的高度(窗口放大缩小时这个值会变化),如果没有设DOCTYPE则$(window).height()=$(document).height(),在即当内容超一屏时$(window).height()为网页实际高度,并不是所说的等于窗口高度。

解决办法:s要取得窗口的高度,只能根据DOCTYPE来做相应的更改,在没有设DOCTYPE时做如下处理
   if($(document).height()>=$(window).height()){
    _windowHeight=document.body.clientHeight;
   }else{//alert($(window).height());
    _windowHeight=$(document).height();
   };
在有设DOCTYPE为transitional.dtd时,windowHeight=$(window).height()

时间: 2024-10-09 05:19:13

DOCTYPE对$(window).height()取值的影响的相关文章

$(window).height()取值等于$(document).height()的问题

今天一个同事反映公司网站的弹窗跑到网页底部去了,检查JS代码,测试发现文件中$(window).height()取得的值竟然等于$(document).height().百思不得其解,百度找到一篇文章说webkit内核下,如果使用的是html5格式的文档声明,则会出现这种情况,文章介绍的方法是将原来的文档声明改为: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.

jquery $(window).height()取值等于$(document).height()的问题

问题现象:JSP中头部引用了某个head.jsp,在portal.jsp中生成片段时如下 但最终生成的HTML如下 发现<!DOCTYPE html>没有解析到,因此忽略了.郁闷了几个小时.哎 参考资料:http://www.th7.cn/web/html-css/201411/66445.shtml

lua5.1 和 5.2 关于 sequence 的定义变化,对#table取值的影响

引子 环境 lua 5.2 a = {} for i=1,2 do a[i] = i*3 end a[4] = 11; print(a[#a]) ---print 11 ----------------------------------- a = {} for i=1,3 do a[i] = i*3 end a[5] = 11; print(a[#a]) ----print 9 --------------------------------- #a  第一个的值是4   第二个的值是3 依据

$(window).height() 文档高度问题

遇到一个这样的问题: 有个项目做的好好的,测试时一步一步小心过来,做了一段时间后,发现前面的完成的功能出了问题了 首先描述下出问题的功能: 做滚动条下拉加载的时候用的网上找的一种方法 $(window).scroll(function(){ if($(document).scrollTop()>=$(document).height()-$(window).height()){ alert("aa"); } }); 当我们出现滚动条时,把滚动条下拉就可以产生事件,这样我们就可以在

sphinx下的max_matches取值对SetLimits的影响

使用PHP在客户端执行 $s -> SetLimits(0, 15, 1200); 传递的第三个参数,是服务器端设定当前查询的结果集大小为1200,但是运行结果,确实$s最终查询得到的结果为空值,为什么呢? 因为,这是由服务器原因造成的,因为服务器端存在max_matches配置项,默认取值为1000,所以若客户端取值超过1000,服务器将不返回任何信息. 知道这个原因,我们只需将服务器的max_matches配置项的值改为1200以上即可! sphinx下的max_matches取值对SetL

C# Textbox的ImeMode取值对中文输入法的影响 (转)

摘自:http://blog.csdn.net/jhycjhyc/article/details/6578570 C# Textbox的ImeMode取值对中文输入法的影响           取值 NoControl 首次调出后按一次ctrl+space才能正确使用 中西标点或全半角字符继承上次设置 调出后默认为英文输入状态  调出后默认为西文标点 英文输入时为半角字符 调出后默认为英文输入状态  调出后默认为西文标点 英文输入时为半角字符 不建议使用 On 调出后默认为汉字输入状态  中西标

C# Textbox的ImeMode取值对中文输入法的影响(进入才能看清)

原文:C# Textbox的ImeMode取值对中文输入法的影响(进入才能看清) C# Textbox的ImeMode取值对中文输入法的影响 ? ? ? ? ? ? 取值 五笔加加 微软拼音3.0 搜狗拼音 说明 NoControl 首次调出后按一次ctrl+space才能正确使用 中西标点或全半角字符继承上次设置 调出后默认为英文输入状态? 调出后默认为西文标点 英文输入时为半角字符 调出后默认为英文输入状态? 调出后默认为西文标点 英文输入时为半角字符 不建议使用 On 调出后默认为汉字输入

C# Textbox 的 ImeMode属性的取值对输入状态的影响

          取值 五笔加加 微软拼音3.0 搜狗拼音 (适用于主流中文输入法) 说明 NoControl 首次调出后按一次ctrl+space才能正确使用 中西标点或全半角字符继承上次设置 调出后默认为英文输入状态  调出后默认为西文标点 英文输入时为半角字符 调出后默认为英文输入状态  调出后默认为西文标点 英文输入时为半角字符 不建议使用 On 调出后默认为汉字输入状态  中西标点或全半角字符继承上次设置 调出后默认汉英文输入.中西标点或全半角字符继承上次设置 调出后默认汉英文输入.

javacscript 3 获取时间、数字取值、定时器

[jq与js的关系]:jq是对js常用的方法进行封装.简化和优化. [小技巧]ctrl+k+D :VS写代码格式乱了时,整理代码用的快捷键 ------------------------------------------------------------------------------------------------------ 1.获取时间: 方法 描述 getFullYear() 返回四位数的年份 getMonth() 返回月份(从0开始,1月=0,2月=1,...) getD