为迷你播放器功能禁用 YouTube 的下拉功能

Disabling YouTube's drag down for miniplayer functionality

如果我观看 YouTube 视频并尝试将播放器向下拉,它会这样做:

有时它不会这样做。有时它只是在全屏模式下执行此操作。有时它也在剧院模式下这样做。它是在不久前开始发生的。

我试过了 document.addEventListener('mousemove', (e) => { e.stopImmediatePropagation(); e.stopPropagation(); e.preventDefault();}, true) 在 Tampermonkey 中,但它会禁用除迷你播放器的向下拖动之外的所有其他鼠标移动。我已经试过了user-select: none,但也没有解决这个问题。

我试过禁用扩展程序的隐身模式。没有任何帮助。

我是 运行 最新的 Chrome。 95.0.4638.54

由于某些原因,这在 Chromium 中不会发生:版本 94.0.4606.81

我不是唯一遇到这个问题的人:https://www.reddit.com/r/youtube/comments/l4falt/is_there_a_way_to_turn_off_the_drag_down_to/

我还没有找到关于它的任何其他论坛帖子。

有什么方法可以禁用此功能吗?

更新:此代码似乎有效:https://pastebin.com/n093g9Ur

有点难,但是为了解决这个问题:

  1. 首先,有必要找到监听触发此行为的用户事件的元素,方法是在 YouTube 播放器的元素上使用 Ctrl-Shift-C,然后将“pointer-events: 'none'”添加到其父元素的 CSS,直到它禁用此功能。
  2. 可以选择正在侦听事件的元素 document.querySelector('ytd-page-manager #player-container');(它 原来有多个元素带有 player-container id YouTube)。
  3. 然后我们通过在 Chrome 开发人员控制台中键入“getEventListeners(temp1)”来获取此元素的事件侦听器(其中 temp1 是 'ytd-page-manager #player-container' 元素,右键单击并选择“存储为全局变量")
  4. 然后我们使用 Capture:true 添加我们自己的事件侦听器并停止对这些事件的立即传播(对于“pointerdown”事件就足够了)

因此在页面加载后代码将是

const container = document.querySelector('ytd-page-manager #player-container');
console.log(container)
container.addEventListener('pointerdown', (e) => {
    console.log(e.currentTarget);
    e.stopImmediatePropagation();
}, true)

我们将“true”添加到事件侦听器以使用 Capture(“一个布尔值,指示此类型的事件将在被分派到它下面的任何 EventTarget 之前被分派到已注册的侦听器 DOM树" -- https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener).