惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
N
Netflix TechBlog - Medium
阮一峰的网络日志
阮一峰的网络日志
H
Help Net Security
I
InfoQ
月光博客
月光博客
量子位
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
D
DataBreaches.Net
宝玉的分享
宝玉的分享
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理

博客园 - jack_Meng

华为手机如何打开工程菜单 2026年AI编程工具大全,33个主流工具 .NET 异常处理的"暗门":代码里被 catch 吃掉的异常,你依然能抓住它——FirstChanceException Visual Studio 插件 Gittoy , 我做了一个 vs 版的 gittoolbox 用 C 语言实现任务栏图标动画,支持使用表情包gif/webp 如何用0预算推广项目 开源的 Windows 桌面整理工具 被罚了500后,整个人都变老实了 提取网页表格,一键导出 CSV:一个 Bookmarklet 脚本就够了 从零搭建一个最小 AI Agent:Python 完整示例 + AI调用机制详解 CASIO卡西欧计算器的自检模式——2种自检方式 C#把字符串按每两个字符一组,组之间加空格 C#程序从指定路径或网络加载引用的DLL 设置程序PrivatePath,配置引用程序集的指定路径(分离exe和dll) .NET/WPF 程序密钥加密存储:使用 DPAPI 实现安全兼容 一线大厂的Git规范 一线大厂的数据库规范 Python自动化实战:常用的类库和使用场景 工控生态之展示与交互:怎么让工业软件不再"丑" 一个 Python 项目带你入门AI应用开发课程介绍----系列文章 开源好用的酷狗音乐播放器:VibeMusic PowerShell + C# 实现桌面文字提醒,类似于“激活Windows”的功能 【Python】2026动态文字壁纸,一键让你的桌面加上动态效果 Python 用 tkinter 实现在 Windows 上提示文本消息的实现(模拟安卓手机上的 Toast 效果) 用Python在Windows桌面弹出文字提示 在Windows桌面背景上添加自定义文字 常用AI提示词汇总 chrome浏览器,Google新标签页添加快捷图标 油候脚本中,使用GM_info对象,打印脚本信息 高中免费电子教辅资料合集
使用油候脚本,移除页面无法选择文字
jack_Meng · 2026-07-25 · via 博客园 - jack_Meng

在浏览页面的时候,页面上使用了禁用选择文字,禁用了右键等功能,找豆包给了一个解决方案,如下:

方案 1:解绑 document 上所有 selectstart 事件(最简单)

// jQuery 解绑document所有selectstart绑定
$(document).unbind('selectstart');

// 顺带把右键、拖拽一并清掉
$(document).unbind('contextmenu dragstart mousedown');

// 再强制修复CSS不能选中问题
$('body, *').css({
    'user-select': 'auto',
    '-webkit-user-select': 'auto'
});

方案 2:精准只解绑那一个匿名函数(严谨版)

如果页面其他代码也绑定了 selectstart,不想全部清空,只能保存原函数引用再解绑,但匿名函数无法直接获取,只能用 jQuery 内部清理:

// 清空document上jQuery托管的所有事件(慎用,会清掉所有jQuery绑定事件)
$(document).unbind();

方案 3:不用管解绑,直接强行重写事件拦截(终极覆盖)

不管它绑了多少层 jQuery 事件、原生 addEventListener,直接覆盖:

// 原生事件置空
document.onselectstart = null;
document.oncontextmenu = null;

// 阻止jQuery再次绑定生效
Object.defineProperty(document, 'onselectstart', {
    set: function() {},
    get: function() { return null; }
});

// 全局CSS放开选中
document.querySelectorAll('*').forEach(el => {
    el.style.userSelect = 'auto';
    el.style.webkitUserSelect = 'auto';
});

方案 4:彻底根治:禁用 JavaScript(推荐一劳永逸)

  1. F12 打开开发者工具 → 右上角设置图标
  2. Settings → Debugger → 取消 Enable JavaScript
  3. 刷新页面,所有 jQuery 绑定、原生事件全部失效,CSS 限制也可手动修改,百分百可以选中文字。

补充小知识

  1. .bind() 对应解绑 .unbind()
  2. 新版 jQuery .on() 对应解绑 .off()
  3. 原生 addEventListener 只能通过相同函数引用 removeEventListener,匿名函数无法单个移除;
  4. 绝大多数不能选文字,CSS user-select: none 才是大头,只清事件不改 CSS 依然选不动。

======================================================================================

个人使用

版本1

主要是移除页面上的jQuery的绑定的事件

// ==UserScript==
// @name         moveSelect
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http*://shyahs.chneic.sh.cn/*


// @icon         https://www.google.com/s2/favicons?sz=64&domain=doubao.com
// @grant        none
// ==/UserScript==


(function (){
    'use strict';
    // Your code here...

    $(document).ready(function(){
        // 在此处执行希望在页面加载完成后执行的操作
        console.log("moveSelect==========页面加载完成")
        //setTimeout(unbindSelect,1000);
        unbindSelect();

    });

})();



function unbindSelect()
{
    // 主要解决延安中学网站无法选择的问题,jQuery 解绑document所有selectstart绑定, 顺带把右键、拖拽一并清掉
    $(document).unbind('selectstart contextmenu dragstart mousedown');
    // 再强制修复CSS不能选中问题
    $('body, *').css({
        'user-select': 'auto',
        '-webkit-user-select': 'auto'
    });
    console.log("moveSelect==========解绑document所有selectstart绑定")

    // GM_info 内置对象,不需要额外权限
    console.log('当前脚本名称:', GM_info.script.name);
    console.log('脚本信息:', GM_info.script);
    console.log('脚本完整信息:', GM_info);
}

View Code

版本2

增加统一日志打印的功能

// ==UserScript==
// @name         moveSelect
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http*://*
// @match        http*://shyahs.chneic.sh.cn/*

// @icon         https://www.google.com/s2/favicons?sz=64&domain=baidu.com
// @grant        none
// ==/UserScript==


(function (){
    'use strict';
    // Your code here...

    $(document).ready(function(){
        // 在此处执行希望在页面加载完成后执行的操作
        log("==========页面加载完成事件")
        //setTimeout(unbindSelect,1000);
        unbindSelect();

    });

})();

//匿名函数调用日志
(()=>{
    log('匿名函数内容');
})();

//* 统一日志打印
//* @param  {...any} args 要打印的内容
function log(...args) {
    const fnName = new Error().stack.split('\n')[2].match(/at (\w+)/)[1];
    console.log(`[${GM_info.script.name}]-[${fnName}]`, ...args);
}


function unbindSelect()
{
    // 主要解决延安中学网站无法选择的问题,jQuery 解绑document所有selectstart绑定, 顺带把右键、拖拽一并清掉
    $(document).unbind('selectstart contextmenu dragstart mousedown');
    // 再强制修复CSS不能选中问题
    $('body, *').css({
        'user-select': 'auto',
        '-webkit-user-select': 'auto'
    });
    log("==========解绑document所有selectstart绑定")
}

View Code