javascript - 是否可以通过 Tampermonkey 中的用户脚本将特定元素组的 DOM 事件从 Click 更改为 Mouseenter?
问题描述
前提条件:PC,基于 Chrome 的浏览器,在YouTube 上,已登录 YouTube。
YouTube 主页上有视频,推荐给用户。如果用户对某些视频不感兴趣,他必须:
我想用 Tampermonkey 中的用户脚本将这些步骤更改为:
- 将光标悬停在视频区域 -将出现菜单
- 单击不感兴趣按钮 - 视频将从提要中删除
我的问题是:
- 是否可以通过 Tampermonkey 中的用户脚本将特定元素组的 DOM 事件从 Click 更改为 Mouseenter?
- 我在哪里可以找到信息/示例如何做到这一点?
解决方案
这不是最好的解决方案,它只影响在页面开头加载的视频。
(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()));
谢谢你的想法
推荐阅读
- c# - ASP.NET Core 5.0:如何排除 system.IO.Ports 包的运行时文件夹
- azure - Azure API 管理器外部缓存不起作用
- sql - 系统版本化时态表中的 SQL 特定列更新时间
- laravel - Laravel,一天只有一排
- bash - MacOS - killall“mongrel_rails”说“没有找到属于你的匹配进程”
- java - java - 如何在Java中使用字符串的内容作为类构造函数的对象名称,我可以多次使用一个类的对象吗?
- css - 如何在顺风时做出响应式溢出
- php - 如何使用查询生成器将原始子查询转换为 laravel 查询?
- php - PHP - 多个条件的测试数组
- docker - 在heroku中使用sqlite数据库