如何解决如何以编程方式在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:none
或
content-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 举报,一经查实,本站将立刻删除。