您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
通过“猴子补丁”方式拦截 editor.md 的初始化过程,强行注入快捷键禁用配置。
// ==UserScript== // @name 博客园编辑器快捷键禁用器 // @namespace http://tampermonkey.net/ // @version 1.0.0 // @description 通过“猴子补丁”方式拦截 editor.md 的初始化过程,强行注入快捷键禁用配置。 // @author Qixyi // @match https://i.cnblogs.com/posts/edit* // @match https://i.cnblogs.com/post/new* // @run-at document-start // @grant unsafeWindow // @license MIT // ==/UserScript== (function() { 'use strict'; // 在某些环境下需要 unsafeWindow 才能可靠地访问和修改页面自身的全局变量 const win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window; console.log('油猴脚本 V4: 已启动,准备拦截 window.editormd 的创建。'); // --- 在这里配置您想要禁用的快捷键 --- // 这是 editor.md 官方支持的快捷键名称格式。 const keyMapsToBlock = [ 'Ctrl-1', 'Cmd-1', 'Ctrl-2', 'Cmd-2', 'Ctrl-3', 'Cmd-3', 'Ctrl-4', 'Cmd-4', 'Ctrl-5', 'Cmd-5', 'Ctrl-6', 'Cmd-6', 'Ctrl-B', 'Cmd-B', // 加粗 'Ctrl-I', 'Cmd-I', // 斜体 'Ctrl-Q', 'Cmd-Q', // 引用 'Ctrl-K', 'Cmd-K', // 链接 'Ctrl-L', 'Cmd-L', // 链接 'Ctrl-G', 'Cmd-G', // 图片 'Ctrl-H', 'Cmd-H', // 分割线 ]; let originalEditormd = null; Object.defineProperty(win, 'editormd', { configurable: true, enumerable: true, get: function() { return originalEditormd; }, set: function(value) { console.log(`成功拦截到 'window.editormd'!正在进行替换...`); originalEditormd = value; const patchedEditormd = function(id, config) { console.log('博客园页面正在调用 editor.md,已进入我们的代理函数。'); config = config || {}; config.disabledKeyMaps = keyMapsToBlock; console.log('已成功注入禁用的快捷键配置:', config.disabledKeyMaps); return originalEditormd.apply(this, arguments); }; for (let key in originalEditormd) { if (Object.prototype.hasOwnProperty.call(originalEditormd, key)) { patchedEditormd[key] = originalEditormd[key]; } } Object.defineProperty(win, 'editormd', { value: patchedEditormd, writable: true, configurable: true, enumerable: true }); } }); })();