遇到一个这样的问题:
有个项目做的好好的,测试时一步一步小心过来,做了一段时间后,发现前面的完成的功能出了问题了
首先描述下出问题的功能:
做滚动条下拉加载的时候用的网上找的一种方法
$(window).scroll(function(){ if($(document).scrollTop()>=$(document).height()-$(window).height()){ alert("aa"); } });
当我们出现滚动条时,把滚动条下拉就可以产生事件,这样我们就可以在事件中添加需要加载的网页内容,许多网站都是这样做用来节省图片服务器压力。
但今天做着做着发现在ie上面运行正常,在google和火狐上面跑就不正常了。因为一直用的ie测试的,所以,不知道当时改了哪里会引出这个错误,错误出现情况如下
正常情况是
当滚动条到底部时,才触发事件,我这样就可以加载我所需要的内容了,因为$(document).scrollTop()>=$(document).height()-$(window).height()的意思是当滚动条高度大于窗口高度时-文档高度时,就触发该事件,所有就看到了上图所示的效果!
但后面出现错误的情况是:
无论滚动条怎么动都会触发这个事件
后面打印出这两个值:发现这个$(document).height() 和 $(window).height() 这两个值在 google 和 firefox里的值竟然是一样的,在ie中却又不同,也就是不管滚动条怎么动,这个判断条件始终成立,所以出现了ie上没事,其他浏览器出现不正确的情况。
解决办法:
如果你和我一样都是改了这个才出了问题,那么就是这个原因了
我是改了
<!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">
改成了
<html lang='zh-CN' xml:lang='zh-CN' xmlns='http://www.w3.org/1999/xhtml'>
最后改回来,这个问题就解决了
也就是$(window).height()的值正常了,真是坑爹的问题
ps:我是一个喜欢按照自己风格来写代码,不管是前台还是后台,尽量做到能代码备份,当某天无意改了代码,当时可能没发现问题。当某天出了问题了,能回退到前面某一个时间点的代码,那便可以查找一些问题,像我今天遇到的这种问题,也不是没有其他解决办法。我的解决办法就是回退到以前的代码,因为我记得以前这块是没问题的,所有仔细核对后才发现是改了这个头部信息
关于这种工具我现在只知道eclipse的 show local history!这个功能在每保存一次的时候就备份一次,功能非常强大,是保存在本地机器上面的