scorllTop兼容性问题

本文介绍了在实现网页‘回到顶部’功能时遇到的浏览器兼容性问题。由于不同浏览器对scrollTop属性的支持不同,例如IE、Chrome、Firefox和Safari各有差异,导致代码无法正常工作。为了解决这个问题,文章提出了一个兼容性解决方案,通过使用window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0来获取滚动位置,确保在各种浏览器中都能正确显示‘回到顶部’按钮。此外,还提供了一个getTopScroll()函数用于获取页面滚动距离,以帮助实现跨浏览器的兼容性代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实现“回到顶部”功能时,需要判断用户下拉页面的举例,来判断是否需要显示“回到顶部”的按钮。因此准备使用 document.body.scrollTop的值大小来判断。代码如下:

window.onscroll = function(){
	//滚动超出高度,显示按钮,否则隐藏
	var backtop = document.body.scrollTop;
    //滚动超过三分之一的屏幕高度时,将按钮从 display:none设置成block
    if(backtop >= (pagelookheight/3)){
		topbtn.style.display = "block";
	}
    //否则不显示
	else{
		topbtn.style.display = "none";
    }
}

但是上面的代码始终不起效果,原因是各浏览器下scrollTop存在差异

  • IE
    • 对于没有doctype声明的页面,使用 document.body.scrollTop 或 document.documentElement.scrollTop来获取 scrollTop高度
    • 对于有doctype声明的页面,则使用 document.documentElement.scrollTop来获取 scrollTop高度
  • Chrome、Firefox
    • 对于没有doctype声明的页面,使用 document.body.scrollTop 来获取 scrollTop高度
    • 对于有doctype声明的页面,则使用 document.documentElement.scrollTop来获取 scrollTop高度
  • Safari
    • safari 比较特别,有自己获取scrollTop的函数 : window.pageYOffset

因此,为了兼容所有浏览器,需要将原来单一的document.body.scrollTop换成

window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0

可以封装成如下的函数进行调用

//获得页面向左、向上卷动的距离
function getTopScroll(){
    return window.pageYOffset || document.documentElement.scrollTop ||document.body.scrollTop || 0
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值