【问题标题】:How to focus/click on YouTube's Comment Box with JS (DOM)如何使用 JS (DOM) 聚焦/点击 YouTube 的评论框
【发布时间】:2020-12-30 21:10:17
【问题描述】:

1。上下文

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

1:我目前正在使用 Dart,但它模仿 JS,然后无论如何都会被转译成它。

2。我试过的

YouTube 使用了很多自定义 HTML 元素,所以我不清楚什么有效,什么时候有效,我最终不得不对每次遇到自定义标签时发生的事情进行逆向工程。

我基本上尝试过这样的事情:

document.querySelector('#labelAndInputContainer > div').click();

我应该改用focus()吗?

div#labelAndInputContainer 元素一旦获得焦点,就会获得一个名为 focused 的新类。

3。其他可选挑战

最后一节的讨论已重定向到this other question

起初,YouTube 不会加载视频下方的评论部分。只有向下滚动时才会出现评论部分2。那么如何找出触发评论部分加载的事件呢?以及如何人为调度它? — 否则评论框的 HTML 元素将不存在。

我一直在使用getEventListeners() 来确定哪些事件对哪些元素起作用。

2:另一个例子是当一个YouTube页面重新加载/导航到另一个页面时,这是由yt-navigate-start触发的。


您可能已经注意到,我不是 JS 专家,所以请随意深入了解基础知识或给我一些新手提示。

【问题讨论】:

    标签: javascript html dom youtube browser-extension


    【解决方案1】:

    目前您可以使用其 Id 专注于评论输入:

    document.getElementById("simplebox-placeholder").focus();
    

    但是,在您向下翻页并等待它加载之前,它不会加载。所以,向下翻页,稍等片刻。

    此外,根据窗口的宽度,您可能需要多次向下翻页。

    【讨论】:

    • 我仍然认为应该有一种以编程方式触发“滚动效果事件”的方法。例如,getEventListeners(document.querySelector('ytd-item-section-renderer')); 列出了几个有趣的事件,例如 yt-load-next-continuation
    • 我已经设法window.scrollBy(0,9999),等待,再次滚动,等待,找到包装器,scrollIntoView(false)focus()click()textContent="whatever",找到“评论”按钮- 但不要模仿点击......嘘!包装器/盒子 - 查看编辑...
    • 我将编辑问题以仅突出重点部分,因此,您的答案将被接受。我要在另一个问题上询问评论部分的加载。
    • 这个问题的继续可以在here找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2022-01-24
    • 2015-03-31
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多