我可以为所有站点禁用无限滚动吗?


21

我讨厌无限滚动的站点,主要是因为它们占用了我所有的RAM。有什么办法说服网站不要以这种方式加载?也许是浏览器扩展程序可以将其重新变成单独的页面?一种使浏览器报告不支持它的方法?我可以卸载的东西吗?


6
您可以禁用JavaScript。但是,如果网站本身不支持分页,那么其他任何事情都是不可能的。
slhck

adblock导致无限滚动的特定javascript吗?
endlith 2016年

@endolith:针对不同的网站有不同的解决方案,因为每个网站实现无限滚动的方式都不同。请指出哪些是导致您遇到问题的主要网站。
哈里克

@harrymc我想阻止所有的人。例如,一个adblock过滤器列表,它尽可能多地阻止。
Endlith '17

@endolith:您将需要针对多个网站的多个adblock规则。另外,您真正想要的是将滚动条转换为正常的“下一个/上一个”按钮。该功能适用​​于某些网站,如Wordpress。
哈里克

Answers:


4

答案为“否”有几个令人信服的原因。

有些网站在您向下滚动时会动态添加内容(例如,facebook),因此可能是您不喜欢的情况。

其他站点动态地添加内容,而与用户交互(例如,滚动)无关。原则上,一旦页面已满,可以通过防止/限制负责的Web连接来以某种方式处理这些问题。但是,尝试透明地重新启用此功能,以防万一您决定转到“下一页”,这可能注定了失败,因为人们可能希望进程由于超时而放弃。

再有就是一些页面可以简单地输出很多页面内容,甚至可能是静态内容。一旦有足够的数据来呈现屏幕数据,客户端可能会简单地终止连接,但这意味着要进入“下一页”,您必须重新开始加载页面。对于许多页面,这将导致大量带宽浪费,导致无用的重新加载;同样,如果出现副作用(例如在线订单),则可能不希望这样做。或者,客户端可能会限制TCP连接,直到您选择转到“下一页”。恐怕那里的Web服务器不会对这种解决方案感到满意(并断开连接),因为这会浪费它们资源。此外,如果您希望能够翻回上一页,则仍然存在需要将全部内容保留在RAM或高速缓存中的问题。

另一个选择是完全下载页面,然后简单地按页面显示。但这等同于您现在拥有的内容:滚动一长页。您可能只希望内存占用量的大部分在磁盘而不是RAM中,所以此选项可能不太牵强。

所有这些都没有考虑到整体布局可能需要或多或少的完整页面内容来决定“页面”应该是什么样子或在哪里中断页面。

我看到的唯一真正可行的方法是利用允许先验未页面内容的页面显示的机制:使用media:print样式,从本质上讲,这相当于下载页面并进行打印预览。您可能已经观察到,即使Web开发人员可以使用许多样式选项来专门解决分页问题,​​许多页面仍在打印或打印预览中无法正常显示,因此请想象您会得到什么。但是,如果将其用作附件(例如Firefox),则工作流程将是页面下载,然后像在parint预览中一样呈现。如果不深入浏览器的内容,这仍将导致整个页面保留在RAM中,而不是您想要的。


4

使用Firefox时,可以使用附加的 Kill Infinite Scroll(当前版本为0.79.4)。

此附加组件描述为:

这将禁用Tumblr和其他站点使用的无限滚动。特别是它会破坏http://www.infinite-scroll.com (1.4和2.0版)中的脚本。与Anti Tumblr Infinite Scroll附加组件不同,它只是还原原始的Next和Prev按钮。

我相信,还原“下一个”和“上一个”按钮比破坏滚动更可取,因为它仍然可以滚动但内存使用量将保持恒定。

否则,要破坏滚动,我建议您最好使用NoScript之类的扩展程序,而不是使用Adblock,以禁止所有网站(除了您信任的网站)上的所有JavaScript(或至少禁止第三方JavaScript)。实际上,这是每个人都应使用的防御机制,以防止浏览器驱逐病毒。每当您想暂时重新启用滚动时,都可以通过暂时允许脚本(直到关闭浏览器才有效)来实现。


我过去使用过noscript,它破坏了很多东西,不值得使用。Yesscript可能是一个好主意。我已经有一段时间没有使用它了。
Endlith '17

@endolith:在我永久允许一些经常使用的脚本站点之后,NoScript对我来说效果很好。YesScript的问题在于,默认情况下,它可以使所有内容通过,因此将在您知道病毒之前先安装病毒。
哈里克

1
在我的经验中,如果我访问过的所有内容,并且与浏览网站相比,我花了更多的时间在允许脚本上,noscript就会崩溃90%。这个问题是关于无限滚动而不是病毒
Endolith's

4

您可以使用AdBlock / uBlock阻止加载下一页的代码。这很粗糙,但是可以工作,例如:

! Forbes infinite scroll (and all other AJAX) https://www.reddit.com/r/web_design/comments/4i6bpd/never_ending_scroll_down_on_some_websites_is_it_a/d2w3qj2
||forbes.com$xmlhttprequest

我也尝试了这些,但是它们没有用:

! Forbes infinite scroll https://adblockplus.org/forum/viewtopic.php?t=26583
||i.forbesimg.com/assets/img/loading_spinners/*
||forbesimg.com/scripts/combined/js/article-responsive*

! Bloomberg infinite scroll http://www.wilderssecurity.com/threads/ublock-origin-stopping-infinite-scrolling.379726/#post-2525404
bloomberg.com http://assets.bwbx.io/business/public/javascripts/application script block

但是擅长Adblock过滤规则的人(不是我)可以开发一个阻止列表,以阻止许多站点上的无限滚动。

或使用附加组件或用户脚本来覆盖此行为,并用更用户友好的方式替换它。

例如,这种Add-On在Tumblr上将其禁用:https : //addons.mozilla.org/en-US/firefox/addon/anti-tumblr-infinite-scroll/ 当您到达时,它仍会自动加载新页面底部很烦人,但是它代替了当前页面而不是附加当前页面,并演示了可能存在的概念的证明。

我尝试过在这里开始创建列表,但是我不是Adblock规则的专家:

https://gist.github.com/endolith/72ac5e69e037be02b118adbedcdeac59/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.