今天写js 的漂浮广告时发现js跟DOCTYPE冲突了,然后查了一下,是document.body.scrollTop跟DOCTYPE的冲突。

冲突原因:

经过查询,发现,有了DTD声明之后,document.body.scrollTop 的值就会总是等于0,解决办法就是在有 DTD 时用 document.documentElement.scrollTop 代替 document.body.scrollTop 就可以正常使用了。

总结:

  • 页面具有 DTD(或指定了 DOCTYPE)时,使用 document.documentElement。
  • 页面不具有 DTD(或没有指定了 DOCTYPE)时,使用 document.body。
  • 在 IE 和 Firefox 中均是如此。
  • 为了兼容(不管有没有 DTD),可以使用如下代码:
var scrollTop = window.pageYOffset|| document.documentElement.scrollTop|| document.body.scrollTop|| 0;

参考:    http://digdeeply.info/archives/1216279.html

 

很多朋友都可能会遇到一种情况,就是js的漂浮广告单独时能运行,嵌到页面里时却动不了。

今天试了很久,又翻查了代码,还是不懂,随后还是用了jQuery。

后来用排除法查出了问题的所在,是js部分代码跟DOCTYPE冲突了。

开始不知道到底哪里冲突,平时都用到的属性、方法,为什么这下就不行了呢?

后来到网上查,是document.body.scrollTop跟DOCTYPE冲突了,我们可以用document.documentElement.scrollTop来代替,而且千万别忘了,为了兼容各个浏览器,left top 那些值是要加单位的

冲突原因:http://hedgehogking.com/?p=286

 

参考:http://www.jnyl.net/knowledge/324.html

© 2012 Hedgehog Suffusion theme by Sayontan Sinha