在滴答清单网页版编辑器里面禁用Escape键

简介 Introduction

在使用滴答清单 (Dida365) 网页版的时候,我们有时会在其 CodeMirror 编辑器中记录较长或复杂的笔记内容。这种情况下,如果不慎按到了键盘的 Esc (Escape) 键,网页经常会判定为取消或退出编辑状态,从而可能导致编辑进度中断。

我是滴答清单的老用户。滴答清单全平台都可以用,非常不错,唯一的问题是我经常在在打字的时候不小心点了Escape键,不管是编辑器还是Post-it模式,滴答清单都啪会一下子关掉窗口退出编辑,把我的思路打断。这让我非常不爽,我没办法修改抵达清单的Windows版的二进制,所以我就写了这么一个Tampermonkey脚本,可以直接应用在滴答清单的网页版 (https://dida365.com/) 上,反正也是网页版完整版嘛!

这个脚本会在按键事件捕获阶段监听 Esc 键。当判断当前活动的焦点处于滴答清单的编辑器(他们用的竟然是CodeMirror)时,将自动拦截并阻止事件传递,从而避免错误地退出编辑

脚本源码 The Script

在使用前,你需要先在浏览器安装并启用 Tampermonkeyarrow-up-right。然后在仪表盘中添加一个新脚本,将以下代码粘贴进去并保存即可:

// ==UserScript==
// @name         dida365 禁用 CodeMirror ESC
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  仅在编辑器内禁用 ESC,避免退出编辑
// @match        https://dida365.com/*
// @match        https://*.dida365.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function isInCodeMirror(el) {
        while (el) {
            if (el.classList && el.classList.contains('CodeMirror')) {
                return true;
            }
            el = el.parentElement;
        }
        return false;
    }

    document.addEventListener('keydown', function(e) {
        if (e.key === 'Escape') {

            const active = document.activeElement;

            if (isInCodeMirror(active)) {
                console.log('[TM] CodeMirror ESC 已拦截');

                e.stopImmediatePropagation();
                e.stopPropagation();
                e.preventDefault();

                return false;
            }
        }
    }, true); // ⚠️ 捕获阶段

})();

这脚本没什么设置,只要一安装,它就会开始工作。我自己用感觉还不错,要是遇到什么问题,欢迎跟我说!

脚本更新日志

2026-03-30

  • 创建并且开放了这个脚本。

Last updated