< Chrome Extension : TamperMonkey > 去禁用网页的鼠标的事件 (水文)

news2024/12/25 3:10:53

问题描述

在一个视频网站看视频,在播放视频时, 如果当鼠标移到视频外,只要有点击鼠标的动作,视频就会暂停播放(包括 Window 下的 其它 tab)。有种被打劫完财物,还被凌辱的感觉。

解决方案

使用 浏览器扩展程序 TamperMonkey 去运行自定义脚本 ( javascript ) ,实现屏蔽对鼠标事件的监控。我也是第一天用。 

1. 环境准备:

软件位置: Tampermonkey

浏览器:Chrome  

操作系统:Windows 11 24h2

2. 安装 (略)

3. TamperMonkey 操作

a.确保它是运行

用浏览器打开:  chrome://extensions/      并pin到工具条上。

b.添加代码

在浏览器工具条找到图标,点:"create a new script.... "

会看到这个:(下面的代码是复制了全部内容,但修改了 脚本头部信息,但有加入注释 )

c. 修改过脚本头部信息后-完整代码

// ==UserScript==
// @name         #管理界面显示 我会写:网络名称 功能描述
// @namespace    #标识脚本
// @version      #0.6 已经改到第6次了
// @description  #功能详细描述
// @author       # 作者
// @match        # 指定脚本运行的 https://视频网址.com/*
// @grant        none # 不需要特别权限
// @run-at       #脚本执行的时机, document-start <- 加载页面时最先执行
// ==/UserScript==

(function() {
    'use strict';

    function injectDebugCode() {
        const script = document.createElement('script');
        script.textContent = `
            // Debug logging
            const debug = (...args) => console.log('[Debug]', ...args);

            // Monitor video element state changes
            const monitorVideo = (video) => {
                const events = ['play', 'pause', 'seeking', 'volumechange'];
                events.forEach(event => {
                    video.addEventListener(event, (e) => {
                        debug(\`Video \${event} event\`, {
                            paused: video.paused,
                            currentTime: video.currentTime,
                            source: e.target,
                            trigger: e.type
                        });
                    });
                });

                // Override pause method
                const originalPause = video.pause;
                video.pause = function() {
                    debug('Pause attempted', new Error().stack);
                    // 返回一个永远不会完成的Promise
                    return new Promise(() => {});
                };
            };

            // Monitor DOM for video elements
            const observer = new MutationObserver((mutations) => {
                mutations.forEach(mutation => {
                    mutation.addedNodes.forEach(node => {
                        if (node.nodeName === 'VIDEO') {
                            debug('New video element added:', node);
                            monitorVideo(node);
                        }
                    });
                });
            });

            // Observe document for new video elements
            observer.observe(document.documentElement, {
                childList: true,
                subtree: true
            });



        `;
        (document.head || document.documentElement).appendChild(script);
        script.remove();
    }

    // 立即注入调试代码
    injectDebugCode();

    // 在页面加载完成后也执行一次
    document.addEventListener('DOMContentLoaded', () => {
        // 查找所有现有的视频元素
        document.querySelectorAll('video').forEach(video => {
            console.log('[Debug] Found existing video:', video);
            const clone = video.cloneNode(true);
            video.parentNode.replaceChild(clone, video);
        });
    });

})();

d. 应用代码

用以上内容,替换。参考脚本“注释”修改其部分内容后,按 ctrl+s 保存代码

在视频页面,按 ctrl+F5 重新加载页面,这时就会加载 tampermonky 中的脚本。

4. 代码简介

  • 在控制台输出调试信息 const debug
  • 监听视频的各种事件(播放、暂停、查找、音量变化) const monitorVideo
  • 阻止视频暂停 const originalPause
  • 监听 DOM 变化 当新的视频元素被添加到页面时,立即开始监控  const observer

已知问题

因为使用自定义的脚本,去禁用了网页播放器的"暂停"事件,所以在 Tampermonkey 中启了脚本后,视频一但播放后,是无法暂停的。 但 seeking 前后快进,及其它功能不受影响。

TamperMonkey 有一个 停止脚本功能,不需要运行脚本,可以停用它,如下图的红圈:

补充:

“脚本头部信息” 功能,相当于一个 filter ,推荐只用来匹配唯一的网站。描述是给自己看的,越清晰越方便。

可能是因为没充值,现在要发 2 篇才给流量券,今天第二篇比较水,见谅了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全 | 常见的网络攻击类型及防范技巧全解析

网络安全 | 常见的网络攻击类型及防范技巧全解析 一、前言二、常见网络攻击类型2.1 网络扫描2.2 恶意软件攻击2.3 网络钓鱼2.4 拒绝服务攻击&#xff08;DoS/DDoS&#xff09;2.5 中间人攻击2.6 SQL 注入攻击2.7 跨站脚本攻击&#xff08;XSS&#xff09; 三、防范技巧3.1 网络…

CE第七次作业

1. for创建20用户 用户前缀由用户输入 用户初始密码由用户输入 例如&#xff1a;test01,test10 [rootServer ~]# vim add_user20.sh #!/bin/bash read -p "please input usernames prefix:" name_pre read -p "please input users passwd:" p…

了解反向传播算法

目录 一、说明 二、了解反向传播算法 三、定义神经网络模型 3.1 输入层 3.2 隐藏图层 3.3 输出层 四、前向传播和评估 五、反向传播和计算梯度 六、结束语 一、说明 梯度正向和反向传播&#xff0c;是神经网络的重要概念。其中包含的重要技巧是&#xff1a;1&#xff09;复函数…

实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域

近日&#xff0c;ISC.AI 2024创新能力百强&#xff08;以下简称“创新百强”&#xff09;正式发布《ISC.AI 2024创新能力全景图谱》。该全景图谱是由政企、资本、高校、行业力量共同完成了领域划分、综合创新等标准的制定&#xff0c;整合梳理了参评的300余家数字安全厂商、120…

Web3.0安全开发实践:9个sCrypt智能合约开发的最佳实践

sCrypt是一种基于TypeScript的嵌入式领域特定语言&#xff08;eDSL&#xff09;&#xff0c;专为在比特币链上编写智能合约而设计。sCrypt智能合约使用比特币支持的操作码&#xff0c;可以编译成Bitcoin Script。由此生成的类似汇编的脚本可用作交易中的锁定脚本。 本文将探讨…

新手SEO指南如何快速入门与提升网站排名

内容概要 搜索引擎优化&#xff08;SEO&#xff09;是提高网站可见度和排名的重要手段&#xff0c;尤其对新手来说&#xff0c;掌握其基本概念和实用技巧至关重要。本文将针对新手提供一系列的指导&#xff0c;帮助你快速入门并逐步提升网站排名。 首先&#xff0c;了解SEO的…

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #

‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

‘pnpm’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 1.情况: npm -v 和 node -v的都正常就是 pnpm-v 无效 检查环境变量也没看出问题 2.分析 没有正确添加环境变量 3.解决 找到npm的全局安装目录 npm list -g --depth 0这里出现了npm的全局安装…

Docker 部署 SpringBoot VUE项目

是一套基于若依的wms仓库管理系统 一、后端部署 后端地址&#xff1a;https://gitee.com/zccbbg/wms-ruoyi/tree/v1/ 1、用IDEA拉代码&#xff0c;并修改API统一后缀 2、复制一个配置文件 application-dev.yaml&#xff0c;并修改里面的mysql与redis配置 3、将打包的jar上传…

面试基础篇---迭代器,yield, tcp, 等

1.谈谈python的装饰器&#xff0c;迭代器&#xff0c;yield&#xff1f; 迭代器在内存中通常是一次性遍历的&#xff0c;也就是说&#xff0c;一旦遍历完所有元素&#xff0c;它就会停止工作&#xff0c;不可再用。 惰性计算&#xff1a;生成器按需生成数据&#xff0c;即只有在…

【文档搜索引擎】搜索模块的完整实现

调用索引模块&#xff0c;来完成搜索的核心过程 主要步骤 简化版本的逻辑&#xff1a; 分词&#xff1a;针对用户输入的查询词进行分词&#xff08;用户输入的查询词&#xff0c;可能不是一个词&#xff0c;而是一句话&#xff09;触发&#xff1a;拿着每个分词结果&#xf…

帝国cms灵动标签调用相关文章

帝国cms相关文章调用的方法很多&#xff0c;官方默认调用方法是使用标签 [!--other.link--] 那么内容页调用相关文章&#xff0c;什么时候用到灵动标签呢 答案是调用同类型的文章&#xff0c;比如有相同关键词或者相同tags标签的文章 使用灵动标签是如何调用的呢&#xff0…

低空经济的地理信息支撑:构建安全、高效的飞行管理体系

随着无人机等低空飞行器的广泛应用&#xff0c;低空空域管理的重要性日益凸显。地理信息技术作为低空空域管理的重要支撑&#xff0c;对于保障低空经济的健康发展具有不可替代的作用。 地理信息技术在低空空域管理中的作用 地理信息技术在低空空域管理中扮演着关键角色&#x…

一体式IO模块:打印机加工产线国产化降本增效的新利器

在当今全球化的市场竞争中&#xff0c;打印机制造行业面临着前所未有的挑战与机遇。为了提升生产效率、降低成本&#xff0c;并加速国产化进程&#xff0c;各大打印机制造商纷纷寻求技术创新与升级。明达技术自研推出的MR20一体式IO模块作为工业自动化领域的核心组件&#xff0…

「下载」智慧产业园区-数字孪生建设解决方案:重构产业全景图,打造虚实结合的园区数字化底座

数字孪生技术作为一种创新的管理工具&#xff0c;正逐步展现出其在智慧园区建设中的重要意义。以下将从几个方面详细阐述数字孪生在智慧园区建设中的关键作用。 一、提升园区运营管理的智能化水平 数字孪生技术通过构建园区的虚拟镜像&#xff0c;实现了对园区物理世界的全面…

ICASSP 2025 中了 ,不去印度参会就撤稿?

近日&#xff0c;ICASSP 2025正式放榜&#xff0c;身边很多同学都收到了好消息&#xff0c;虽然目前官方还没有给出正式的数据&#xff0c;但据知情人士透露&#xff0c;今年的投稿编号超过8000&#xff0c;可以说是创造了历史新高&#xff0c;预测整体录取率在46%左右。 根据…

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法&#xff1a;穷举法&#xff0c;在原始图片上进行不同尺度不同大小的滑窗&#xff0c;获取每个可能的位置 弊端&#xff1a;计算量大&#xff0c;且尺度不能兼顾 Selective …

LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度

本代码的主要功能是建模 LOS&#xff08;视距&#xff09;和 NLOS&#xff08;非视距&#xff09;环境下的定位系统&#xff0c;估计目标的动态位置&#xff0c;三维空间 文章目录 运行结果源代码代码介绍 总结 运行结果 10个点的轨迹定位&#xff1a; 50个点的轨迹定位&#…

企业内训|高智能数据构建、Agent研发及AI测评技术内训-吉林省某汽车厂商

吉林省某汽车厂商为提升员工在AI大模型技术方面的知识和实践能力&#xff0c;举办本次为期8天的综合培训课程。本课程分为两大部分&#xff1a;面向全体团队成员的AI大模型技术结构与行业应用&#xff0c;以及针对技术团队的高智能数据构建与Agent研发。课程内容涵盖非结构化数…

专业的内外网数据交换方案 可解决安全、效率、便捷3大问题

内外网数据交换是很多企业和行业都会面临的场景&#xff0c;既然隔离了内外网&#xff0c;重中之重就是要确保数据的安全性&#xff0c;其次在数据流转交换过程中&#xff0c;不能太繁琐复杂&#xff0c;需要让用户快速、便捷的进行数据交换。首先我们来看看&#xff0c;在进行…