首页 > 解决方案 > 是否可以通过 Tampermonkey 中的用户脚本将特定元素组的 DOM 事件从 Click 更改为 Mouseenter?

问题描述

前提条件:PC,基于 Chrome 的浏览器,在YouTube 上,已登录 YouTube。

YouTube 主页上有视频,推荐给用户。如果用户对某些视频不感兴趣,他必须:

  1. 将光标悬停在视频区域上 -将出现三个点按钮
  2. 单击三个点按钮 -将出现菜单
  3. 单击不感兴趣按钮 - 视频将从提要中删除

我想用 Tampermonkey 中的用户脚本将这些步骤更改为:

  1. 将光标悬停在视频区域 -将出现菜单
  2. 单击不感兴趣按钮 - 视频将从提要中删除

我的问题是

  1. 是否可以通过 Tampermonkey 中的用户脚本将特定元素组的 DOM 事件从 Click 更改为 Mouseenter?
  2. 我在哪里可以找到信息/示例如何做到这一点?

标签: javascriptyoutubeevent-listenertampermonkeyuserscripts

解决方案


这不是最好的解决方案,它只影响在页面开头加载的视频。

(async () => {
    let i = 1;
    while (i != 0) {
        await sleep(1);
        i++;
        if (i > 100) {
            const elements = document.querySelectorAll('yt-icon-button#button.dropdown-trigger.style-scope.ytd-menu-renderer');
            elements.forEach(el => el.addEventListener('mouseover', event => event.target.click()));
            i = 0;
        }
    }
})();
function sleep(ms) {
    return new Promise(function (resolve, reject) {
        setTimeout(() => {
            resolve();
        }, ms);
    })
}

主要部分是:

// Selecting all elemets on page to add new eventlistener
const elements = document.querySelectorAll('yt-icon-button#button.dropdown-trigger.style-scope.ytd-menu-renderer'); 
// Adding new evenlistener which on Mouseover performs Click
elements.forEach(el => el.addEventListener('mouseover', event => event.target.click()));

谢谢你想法


推荐阅读