鼠标点击编辑器任意位置
会出现【光标】
光标一闪一闪的
希望光标不再闪烁,就是一个竖线
/* 停止光标闪烁* /
.protyle-content {
caret-color: transparent !important; / 隐藏光标 /
animation: none !important; / 禁用闪烁动画 */
}
这是 gemini2.5 写的代码
只能让光标隐藏
鼠标点击编辑器任意位置
会出现【光标】
光标一闪一闪的
希望光标不再闪烁,就是一个竖线
/* 停止光标闪烁* /
.protyle-content {
caret-color: transparent !important; / 隐藏光标 /
animation: none !important; / 禁用闪烁动画 */
}
这是 gemini2.5 写的代码
只能让光标隐藏
// --- 光标显隐控制:基于鼠标按住时长 ---
(function() {
if (window.caretVisibilityByHoldInitialized) {
return;
}
window.caretVisibilityByHoldInitialized = true;
const HOLD_DURATION_THRESHOLD_MS = 400; // 0.6秒
const HIDE_CARET_CLASS = 'custom-hide-caret-on-short-hold'; // 新的类名,避免与之前冲突
let mouseDownTimestamp = 0;
let holdTimer = null; // 用于 mousedown 后超过阈值自动显示光标的定时器
let editorTarget = null; // 记录 mousedown 发生时的可编辑目标
// --- 添加 CSS 规则 ---
const styleElement = document.createElement('style');
styleElement.textContent = `
body.${HIDE_CARET_CLASS} .protyle-wysiwyg div[contenteditable="true"],
body.${HIDE_CARET_CLASS} .protyle-title__input,
body.${HIDE_CARET_CLASS} textarea.b3-text-field {
caret-color: transparent !important;
}
`;
document.head.appendChild(styleElement);
// ---
// 监听整个文档的 mousedown,以捕获所有可能的编辑器点击
document.addEventListener('mousedown', function(event) {
// 只处理鼠标左键
if (event.button !== 0) {
return;
}
// 检查点击目标是否在我们关心的可编辑区域内
const target = event.target.closest('div[contenteditable="true"], .protyle-title__input, textarea.b3-text-field');
if (!target) {
// 如果点击在非编辑区域,我们可能希望光标恢复显示(如果之前是隐藏的)
// document.body.classList.remove(HIDE_CARET_CLASS); // 可选:点击非编辑区恢复光标
mouseDownTimestamp = 0; // 重置时间戳
clearTimeout(holdTimer); // 清除可能存在的定时器
editorTarget = null;
return;
}
editorTarget = target; // 记录当前操作的编辑器目标
mouseDownTimestamp = Date.now();
// console.log("Mousedown at", mouseDownTimestamp);
// 清除上一个可能存在的长按定时器
clearTimeout(holdTimer);
// 设置一个定时器,如果0.6秒后鼠标仍未松开,则显示光标
holdTimer = setTimeout(function() {
// console.log("Hold duration exceeded threshold - showing caret.");
document.body.classList.remove(HIDE_CARET_CLASS);
// 此时鼠标仍然是按下的,所以光标应该已经出现并开始闪烁
// 如果需要,可以在这里强制刷新光标状态,但通常浏览器会自动处理
}, HOLD_DURATION_THRESHOLD_MS);
}, true); // 使用捕获阶段
document.addEventListener('mouseup', function(event) {
if (event.button !== 0 || !editorTarget) { // 确保有对应的 editorTarget
return;
}
// 清除长按显示光标的定时器,因为鼠标已经松开了
clearTimeout(holdTimer);
holdTimer = null;
if (mouseDownTimestamp === 0) { // 如果没有有效的 mousedown 事件记录
return;
}
const mouseUpTimestamp = Date.now();
const pressDuration = mouseUpTimestamp - mouseDownTimestamp;
// console.log("Mouseup at", mouseUpTimestamp, "Duration:", pressDuration);
if (pressDuration <= HOLD_DURATION_THRESHOLD_MS) {
// console.log("Press duration within threshold - hiding caret.");
document.body.classList.add(HIDE_CARET_CLASS);
} else {
// 如果按住时间超过了阈值,在mousedown的定时器里已经处理了显示光标的逻辑
// 或者如果定时器没来得及触发(例如,按住0.7秒松开),这里也确保光标是显示的
// console.log("Press duration exceeded threshold (mouseup) - ensuring caret is shown.");
document.body.classList.remove(HIDE_CARET_CLASS);
}
mouseDownTimestamp = 0; // 重置时间戳,为下一次操作做准备
editorTarget = null; // 清理目标
}, true); // 使用捕获阶段
console.log("光标按住时长控制脚本已初始化 (阈值: " + HOLD_DURATION_THRESHOLD_MS + "ms)。");
})();
换了个思路,当鼠标按住超过 400 毫秒,显示光标,只是单击就隐藏
看到闪烁就难受的强迫症患者终于得到治疗
道爷我成了,我成啦
哪里都缺人,哪里都不缺人。
Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。
MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。
找到自己的位置,萌新烦恼少。
上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)
钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。
子曰:“工欲善其事,必先利其器。”
HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。
Communication channel for makers and users.
Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。
你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!
宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”
Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。
GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。
i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。
支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。
TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。
深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。
Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper
愿逝者安息!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于