【问题标题】:jQuery scrollTop() autoscroll by increment works on some sites, but not others. Why?jQuery scrollTop() 增量自动滚动适用于某些网站,但不适用于其他网站。为什么?
【发布时间】:2017-01-12 19:15:50
【问题描述】:

我找到了一个(工作的)脚本,它可以将网页自动滚动一定数量的像素:

var y = $(window).scrollTop(); $("html, body").animate({ scrollTop: '+=291px'}, 300);

此脚本适用于某些网站,但不适用于其他网站。例如,

脚本适用于:Twitter.com、BBC.co.uk、Reddit.com

脚本不起作用:Facebook.com、Instagram.com、Pinterest.com...并显示以下错误消息之一:

VM104:1 未捕获的类型错误:无法读取属性“scrollTop”的 未定义于 :1:18

(Pinterest 和 Instagram)

Uncaught TypeError: $(...).scrollTop 不是一个函数 :1:19

(脸书)

有人知道为什么会发生这种情况,以及我们如何解决它吗?我很想知道。

干杯,StackOverflow!

【问题讨论】:

  • “脚本”是指在浏览器控制台中键入时?
  • 我相信那些网站不使用 jQuery
  • 使用纯JS和纯JS动画也一样,如果你想让它在所有网站上都能工作,你可以检查jQuery是否未定义

标签: javascript jquery scrolltop scrollto autoscroll


【解决方案1】:

普通的 JS? document.getElementsByTagName("body")[0].scrollTop = 0

或者你需要动画吗?

编辑......

带动画

function scrollToTop(){  

  var scrollHeight = document.getElementsByTagName("body")[0].scrollHeight;

function scrollToTop(){  
 var scrollAtATime = 10;
 var scrollHeight = document.getElementsByTagName("body")[0].scrollHeight;
 var t = window.setInterval(function(){

   document.getElementsByTagName("body")[0].scrollTop = scrollHeight;

   scrollHeight-=scrollAtATime;
   
   //Add Easing
   scrollAtATime = scrollHeight / 100;

   if(Math.ceil(scrollHeight) <= 1) window.clearInterval(t);
   
  },1);
   
}
div{
  border:1px solid red;
  height:2000px;
}
<div>

</div>
<button onclick="javascript:scrollToTop()">Click to scroll</button>

【讨论】:

  • OP 想要一个解决方法,你应该把它放在评论部分
  • 这是一种解决方法....有些网站不使用jquery,那为什么不用纯js呢?
  • 这会让动画工作吗?根据他的代码?把动画代码也放好
  • 我不知道为什么 stackoverflow 会在该示例中添加一些内容,但它可以在 codepen 中工作 --EDIT-- 不要在示例中使用控制台登录大声笑
  • 您永远不应该使用 setInterval IMO,尤其是在如此低的间隔 (1ms) 的情况下,尤其是当回调导致页面重新绘制时。使用requestAnimationFrame,每次函数执行时检查是否完成,如果没有再次调用rAF。 Here's why
猜你喜欢
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
相关资源
最近更新 更多