现象描述
当前版本似乎锚文本链接属性为空时,指针移到锚文本上会显示 null
尝试用 css 代码片段处理,但是该内容时单纯的文本节点,貌似纯 css 无法处理该情况
当前行为用于利用 html 的 title 属性来为文本做简单的注释,虽然创建无链接属性的锚文本用于注释可能不太常见,但光标移入时显示 null 可能还是不太合适(对于非开发者来说)
当前版本似乎锚文本链接属性为空时,指针移到锚文本上会显示 null
尝试用 css 代码片段处理,但是该内容时单纯的文本节点,貌似纯 css 无法处理该情况
当前行为用于利用 html 的 title 属性来为文本做简单的注释,虽然创建无链接属性的锚文本用于注释可能不太常见,但光标移入时显示 null 可能还是不太合适(对于非开发者来说)
用 ai 缝了个脚本移除 tooltip 的文本内容实现隐藏 null,作为一个临时方案凑合用(
效果如图,移除了 null 文本和设置了高度避免被鼠标遮挡:
(function() {
// 处理 tooltip 的函数
function handleTooltip(tooltipElement) {
if (!tooltipElement) return;
// 检查 tooltip 是否包含 .fn__hr 元素
const hrElement = tooltipElement.querySelector('.fn__hr');
if (!hrElement) return;
// 获取 .fn__hr 的前一个节点
const previousNode = hrElement.previousSibling;
if (!previousNode) return;
// 如果前一个节点不是 span 元素(即为文本节点或其他非 span 元素)
if (previousNode.nodeName !== 'SPAN') {
// 清空 tooltip 的文本内容,保留 .fn__hr 后面的内容
while (tooltipElement.firstChild && tooltipElement.firstChild !== hrElement) {
tooltipElement.removeChild(tooltipElement.firstChild);
}
// 移除 .fn__hr 节点本身
if (hrElement.parentNode === tooltipElement) {
tooltipElement.removeChild(hrElement);
}
// 调整 tooltip 位置,向下偏移一些以避免被光标遮挡
// 获取当前的 top 值
const currentTop = parseInt(tooltipElement.style.top, 10) || 0;
// 设置新的 top 值,向下偏移 15 像素(可根据需要调整)
tooltipElement.style.top = (currentTop + 15) + 'px';
}
}
// 使用 MutationObserver 监听 DOM 变化
function observeTooltips() {
const observer = new MutationObserver(mutations => {
let tooltipFound = false;
let tooltipElement = null;
mutations.forEach(mutation => {
// 检查添加的节点
if (mutation.addedNodes.length) {
// 遍历添加的节点
mutation.addedNodes.forEach(node => {
// 检查是否是 #tooltip 或者包含 #tooltip
if (node.id === 'tooltip') {
tooltipFound = true;
tooltipElement = node;
} else if (node.nodeType === 1) { // 元素节点
const tooltip = node.querySelector('#tooltip');
if (tooltip) {
tooltipFound = true;
tooltipElement = tooltip;
}
}
});
}
// 检查修改的节点
if (mutation.target.id === 'tooltip') {
tooltipFound = true;
tooltipElement = mutation.target;
} else {
const tooltip = mutation.target.querySelector('#tooltip');
if (tooltip) {
tooltipFound = true;
tooltipElement = tooltip;
}
}
});
// 如果找到了 tooltip 元素,处理它
if (tooltipFound && tooltipElement) {
// 使用 setTimeout 稍微延迟处理,确保 tooltip 内容已完全加载
setTimeout(() => {
handleTooltip(tooltipElement);
}, 0);
}
});
// 配置观察器
const config = {
childList: true, // 观察子节点的添加或删除
subtree: true, // 观察所有后代节点
characterData: true, // 观察文本变化
attributes: true // 观察属性变化
};
// 启动观察器,观察整个文档
observer.observe(document.body, config);
// 也检查当前可能已存在的 tooltip
const existingTooltip = document.getElementById('tooltip');
if (existingTooltip) {
handleTooltip(existingTooltip);
}
}
// 当 DOM 加载完成后初始化
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', observeTooltips);
} else {
observeTooltips();
}
})();
CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。
Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。
etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。
百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。
沉迷游戏伤身,强撸灰飞烟灭。
Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。
GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。
ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。
Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。
Quicker 您的指尖工具箱!操作更少,收获更多!
你比 99% 的人都优秀么?
锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。
好记性不如烂笔头。
本标签主要用于分享网络空间安全专业的学习笔记
C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。
JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。
JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。
Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
哪里都缺人,哪里都不缺人。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于