[js] 有什么办法能让回车不创建文档?

image.png

如果搜索不出来内容, 按回车会新建文档

有什么办法能取消创建新文档这个动作么

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25248 引用 • 104162 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    152 引用 • 991 回帖 • 2 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9649 引用 • 43887 回帖 • 93 关注
1 操作
wilsons 在 2025-04-09 21:58:39 更新了该帖

相关帖子

被采纳的回答
  • 改变 dataset 类型值就好了,如下代码

    可参考 https://github.com/siyuan-note/siyuan/blob/1317020c1791edf440da7f836d366567e03dd843/app/src/search/util.ts#L798

    // 搜索不到时回车不新建文档(鼠标点击可新建)
    // see https://ld246.com/article/1743579723972
    (()=>{
        observeSearchNewDocDom((searchNew) => {
            // 加载时修改类型
            searchNew.dataset.type = 'search-new-disabled';
            // 点击时恢复类型
            searchNew.addEventListener('click', function(event) {
                searchNew.dataset.type = 'search-new';
            });
            searchNew.querySelector('.b3-list-item__meta').textContent = '点击创建';
            if(searchNew.nextElementSibling && searchNew.nextElementSibling.matches('.search__empty')) {
                searchNew.nextElementSibling.textContent = `搜索结果为空,点击创建新文档`;
                searchNew.nextElementSibling.addEventListener('click', function(event) {
                    searchNew.click();
                });
            }
        });
        function observeSearchNewDocDom(callback) {
            // 创建一个观察者实例并传入回调函数
            const observer = new MutationObserver(async (mutationsList, observer) => {
                for (const mutation of mutationsList) {
                    if (mutation.type === 'childList') {
                        mutation.addedNodes.forEach(node => {
                            // 监控搜索新建文档dom被加载
                            if (node.nodeType === 1 && node.matches('#searchList [data-type="search-new"]')) {
                                callback(node);
                            }
                        });
                    }
                }
            });
            // 配置观察选项:
            const config = { 
                childList: true, // 观察子节点的变化(添加/删除)
                subtree: true, // 观察所有后代节点
                attributes: false,
            };
            // 选择需要观察变动的节点
            const targetNode = document.body; // 或者选择更具体的父节点以减少性能消耗
            // 开始观察目标节点
            observer.observe(targetNode, config);
            // 返回一个取消观察的方法
            return () => observer.disconnect();
        }
    })();
    

    该代码回车不创建文档,点击创建,保留了一部分原本功能。

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 用 CSS 隐藏这个新建文档按钮试一下

    css 隐藏不行, 我理解的 css 隐藏只是人看不到而已, 元素还在那里, 你甚至可以可以通过搜索进行点击等操作
    EmberSky
    @EmberSky 试了一下,这个地方确实没法这样用。但其他的各种右键菜单是可以的
    JeffreyChen 1 赞同
  • 改变 dataset 类型值就好了,如下代码

    可参考 https://github.com/siyuan-note/siyuan/blob/1317020c1791edf440da7f836d366567e03dd843/app/src/search/util.ts#L798

    // 搜索不到时回车不新建文档(鼠标点击可新建)
    // see https://ld246.com/article/1743579723972
    (()=>{
        observeSearchNewDocDom((searchNew) => {
            // 加载时修改类型
            searchNew.dataset.type = 'search-new-disabled';
            // 点击时恢复类型
            searchNew.addEventListener('click', function(event) {
                searchNew.dataset.type = 'search-new';
            });
            searchNew.querySelector('.b3-list-item__meta').textContent = '点击创建';
            if(searchNew.nextElementSibling && searchNew.nextElementSibling.matches('.search__empty')) {
                searchNew.nextElementSibling.textContent = `搜索结果为空,点击创建新文档`;
                searchNew.nextElementSibling.addEventListener('click', function(event) {
                    searchNew.click();
                });
            }
        });
        function observeSearchNewDocDom(callback) {
            // 创建一个观察者实例并传入回调函数
            const observer = new MutationObserver(async (mutationsList, observer) => {
                for (const mutation of mutationsList) {
                    if (mutation.type === 'childList') {
                        mutation.addedNodes.forEach(node => {
                            // 监控搜索新建文档dom被加载
                            if (node.nodeType === 1 && node.matches('#searchList [data-type="search-new"]')) {
                                callback(node);
                            }
                        });
                    }
                }
            });
            // 配置观察选项:
            const config = { 
                childList: true, // 观察子节点的变化(添加/删除)
                subtree: true, // 观察所有后代节点
                attributes: false,
            };
            // 选择需要观察变动的节点
            const targetNode = document.body; // 或者选择更具体的父节点以减少性能消耗
            // 开始观察目标节点
            observer.observe(targetNode, config);
            // 返回一个取消观察的方法
            return () => observer.disconnect();
        }
    })();
    

    该代码回车不创建文档,点击创建,保留了一部分原本功能。

EmberSky
如果感觉我的回答对你有帮助, 请点击 感谢 支持一下, 谢谢! 深圳

推荐标签 标签

  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖 • 2 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 829 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    133 引用 • 1124 回帖 • 114 关注
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖 • 3 关注
  • 996
    13 引用 • 200 回帖 • 2 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 55 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 4 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • abitmean

    有点意思就行了

    37 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 1 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 1 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖 • 1 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 178 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 343 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 564 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 704 关注
  • V2Ray
    1 引用 • 15 回帖 • 3 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    116 引用 • 54 回帖
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    187 引用 • 318 回帖 • 255 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 96 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 5 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9649 引用 • 43887 回帖 • 93 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 641 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖