为迷你播放器功能禁用 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
有点难,但是为了解决这个问题:
- 首先,有必要找到监听触发此行为的用户事件的元素,方法是在 YouTube 播放器的元素上使用 Ctrl-Shift-C,然后将“pointer-events: 'none'”添加到其父元素的 CSS,直到它禁用此功能。
- 可以选择正在侦听事件的元素
document.querySelector('ytd-page-manager #player-container');
(它
原来有多个元素带有 player-container
id
YouTube)。
- 然后我们通过在 Chrome 开发人员控制台中键入“getEventListeners(temp1)”来获取此元素的事件侦听器(其中 temp1 是 'ytd-page-manager #player-container' 元素,右键单击并选择“存储为全局变量")
- 然后我们使用 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).
如果我观看 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
有点难,但是为了解决这个问题:
- 首先,有必要找到监听触发此行为的用户事件的元素,方法是在 YouTube 播放器的元素上使用 Ctrl-Shift-C,然后将“pointer-events: 'none'”添加到其父元素的 CSS,直到它禁用此功能。
- 可以选择正在侦听事件的元素
document.querySelector('ytd-page-manager #player-container');
(它 原来有多个元素带有player-container
id YouTube)。 - 然后我们通过在 Chrome 开发人员控制台中键入“getEventListeners(temp1)”来获取此元素的事件侦听器(其中 temp1 是 'ytd-page-manager #player-container' 元素,右键单击并选择“存储为全局变量")
- 然后我们使用 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).