浏览器兼容的原因造成了$("body").animate({"scrollTop":top})突然失效
展开阅读全文

今天使用jq插件向上滚动的代码,出现了代码失效的原因,代码如下:

$('.header').animate({scrollTop: 0}, 800);

这突然失效了,导致了我检查了好久,jq插件也没问题,事件也可以触发,就是不向上滚动。

百度了下内容,才看见这个介绍:

在Chrome浏览器下,上面的代码没有问题,而在Firefox下却是无效的。百度后才知道,原来这是因为这两个浏览器自身的问题导致的。

对于Chrome而言,支持的是这种写法:

$("body").animate({"scrollTop":top});

而对于Firefox,则是支持如下写法:

$("html").animate({"scrollTop":top});

一直耳闻前端开发需要兼容不同浏览器,非常地麻烦,今天算是见识到了冰山一角。

解决方法

既然这两个浏览器各自支持一种标签选择器,那么只要把两者统合起来即可实现兼容:

$("html,body").animate({"scrollTop":top});

最终,将我的代码改成如下形式便没问题了:

$("html,body").animate({scrollTop:0},800);//向上滚动

$("html,body").animate({scrollTop:$(document).height()},800);//向下滚动