微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以编程方式在YouTube上加载评论部分? 不滚动JS / HTML / DOM

如何解决如何以编程方式在YouTube上加载评论部分? 不滚动JS / HTML / DOM

我正在创建browser extension to enhance YouTube's keyboard navigation。我想到的快捷方式之一是评论 1

首先,YouTube不会在视频下方加载评论部分。仅当您向下滚动时,注释部分才会出现 2 。那么,如何确定哪个事件触发了评论部分的加载?我该如何人为地发送它? —否则,注释框的HTML元素将不存在。

这个问题是this other one的继续。

1:我目前正在使用Dart,但它模仿JS,以后无论如何都会被转译为它。
2:例如,当YouTube页面重新加载/导航到另一个页面时,事件yt-navigate-start被触发。

解决方法

我目前也在做这件事的扩展程序。

(见https://github.com/cyfung1031/Tabview-Youtube

我终于找到了以编程方式重新加载它的解决方案。

执行“加载评论”需要一组标准

1. ytd-comments#comments 必须位于可见区域。

您可以将 position:absolute 和负 z-index 隐藏在 页面,但仍然“可见”。你不能让它 display:nonecontent-visibility:hidden。此外,它应该有高度和宽度,所以 它的 getBoundingClientRect() 在可见区域(屏幕 查看)

2.属性 [hidden]ytd-comments#comments 上设置。

3. #continuations 存在于 ytd-comments#comments 内。

非零大小的块元素#continuations是唯一的元素 在 ytd-comments#comments 内有自己的维度。这是 用于检测加载机制的可见性。它总是在 执行触发的部分的结尾。

当您使用 make scroll 或 window.dispatchEvent(new Event("scroll")); 时,Youtube 编码中 scroll 事件的事件侦听器将检测可见性并执行加载。

您必须等待 Youtube 为您准备好内容(即 #continuations),然后您才能使用 ytd-comments#comments 的属性 [hidden]window.dispatchEvent(new Event("scroll"));

触发>

获取内容后,属性 [hidden] 将被删除。

您可以查看我的用户脚本 https://greasyfork.org/scripts/428651-tabview-youtube 以获取 Youtube Tabview 插件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。