我讨厌无限滚动的网站,主要是因为它们会占用我所有的内存。有没有什么方法可以让网站不以这种方式加载?也许浏览器扩展程序可以将其重新转换为单独的页面?有没有办法让浏览器报告它不支持它?我可以卸载什么?
答案1
有几个令人信服的理由可以证明答案是“不”。
有些网站会在您向下滚动时动态添加内容(例如 Facebook),因此这些可能是您所不想要的情况。
其他网站会动态添加内容,而不依赖于用户交互(例如滚动)。原则上,可以通过在页面已满时阻止/限制负责的 Web 连接来处理这些问题。但是,如果您决定转到“下一页”,尝试透明地重新启用此功能可能会失败,因为人们可能会认为进程会因为超时而放弃。
然后,有些页面会输出大量的页面内容,甚至可能是静态内容。一旦有足够的数据来呈现满屏的数据,客户端可能会简单地断开连接,但这意味着要进入“下一页”,您必须重新开始加载页面。对于许多页面,这会导致大量带宽浪费在无用的重新加载上;而且,如果出现副作用(例如在线订单),这可能不是理想的选择。或者,客户端可能会限制 TCP 连接,直到您选择进入“下一页”。我担心那里的 Web 服务器不会对这样的解决方案感到满意(并断开您的连接),因为它浪费了他们的资源。此外,如果您希望能够翻阅之前的页面,您仍然需要将全部内容保存在 RAM 或缓存中。
另一种方法是完全、简单地下载页面展示逐页显示。但这相当于您现在的情况:滚动浏览一页长页面。您可能只希望大部分内存占用在磁盘而不是 RAM 中,因此这个选项可能并不太牵强。
所有这些都没有考虑到整体布局可能需要或多或少的完整页面内容来决定“页面”应该是什么样子或在哪里分页。
我看到的唯一真正可行的方法是利用允许分页显示先验未分页内容的机制:使用media:print
样式,这基本上相当于下载页面并进行打印预览。您可能已经注意到,尽管 Web 开发人员可以使用许多样式选项来专门解决分页问题,但许多页面在打印或打印预览中显示得非常糟糕,所以想象一下你会得到什么。但是,如果有人将其用作(例如 Firefox)插件,工作流程将是页面下载,然后像在父预览中一样呈现。无需深入浏览器内部,这将仍然导致整个页面被保存在 RAM 中,所以这不是您想要的。
答案2
使用 Firefox 时,可以使用附加组件 杀死无限滚动,当前版本为0.79.4。
该附加组件描述如下:
这将禁用 Tumblr 和其他网站使用的无限滚动。特别是,它使以下脚本失效:http://www.infinite-scroll.com (版本 1.4 和 2.0)。与 Anti Tumblr Infinite Scroll 插件不同,它只是恢复了原始的 Next 和 Prev 按钮。
我认为恢复下一个和上一个按钮比破坏滚动更好,因为仍然可以滚动但内存使用量将保持不变。
否则,为了破坏滚动,我建议不要使用 Adblock,最好使用类似的扩展程序无脚本禁止除您信任的网站之外的所有网站的所有 javascript(或至少禁止第三方 javascript)。这实际上是每个人都应该用来抵御浏览器驱动病毒的一种防御机制。每当您想暂时重新启用滚动时,您可以通过暂时允许脚本(在浏览器关闭之前一直有效)来实现。
答案3
您可以使用 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 过滤规则的人(不是我)可以开发一个阻止列表来阻止许多网站上的无限滚动。
或者使用附加组件或用户脚本来覆盖此行为并将其替换为更加用户友好的行为。
此附加组件会在 Tumblr 上禁用此功能,例如:https://addons.mozilla.org/en-US/firefox/addon/anti-tumblr-infinite-scroll/ 当你到达页面底部时,它仍然会自动加载一个新页面,这很烦人,但它会替换当前页面而不是附加它,并演示了什么的概念证明可以存在。
我曾尝试在这里列出一个清单,但我并不是 Adblock 规则方面的专家:
https://gist.github.com/endolith/72ac5e69e037be02b118adbedcdeac59/