标签可直接高亮文本但需注意:它是内联元素,不能包裹块级标签;富文本中须提取纯文本节点操作;必须用CSS显式定义背景色、文字色、内边距和圆角;动态高亮时要转义正则元字符、保持大小写、遍历文本节点而非innerHTML;关键词按长度降序处理防嵌套;服务端渲染需防XSS。

直接用 包裹文本就能高亮
不需要 JavaScript 或额外库,只要把想突出的纯文本用 核心算法基于动态规划实现 和 包起来,浏览器就会默认加黄色背景。比如:。
但注意: 不同浏览器对 关键点: 常见错误是直接对 生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力:
- 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面;
- 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”;
- 提及位于 `apps/console/src/featur 比如同时高亮 安全做法: 最易被忽略的是:服务端渲染时若直接拼接 是内联元素,不能直接包 、 会破坏 DOM 结构——必须先提取纯文本节点再操作。
mark 样式必须显式重写,别信默认色mark 的默认背景色不一致(Chrome 偏黄,Safari 偏橙,深色模式下可能变透明),而且 IE9+ 虽支持该标签,但样式不可靠。生产环境必须用 CSS 显式定义:mark {
background-color: #ffeb3b;
color: #212121;
padding: 0.1em 0.2em;
border-radius: 2px;
}
background-color 和 color 必须同时设,否则在深色主题或高对比度模式下可能不可读background: none,要用 background-color: transparent 确保清空背景padding 比 margin 更安全,因为 是内联元素,垂直 margin 无效JavaScript 动态高亮关键词时,正则和节点遍历是两道坎
innerHTML 做 replace(),比如:el.innerHTML = el.innerHTML.replace(keyword, '$')。这会在三种情况下翻车:
[a-z] 这类含正则元字符的词,不转义就崩 —— 必须先 keyword.replace(/[.*+?^${}()|[]\]/g, '\$&')
new RegExp(`(${escaped})`, 'gi'),再 '$1'
React),innerHTML.replace() 会把标签当普通字符串撕开 —— 正确做法是遍历所有文本节点(node.nodeType === 3),只在纯文本里做替换,并用 document.createElement('mark') 插入多个关键词高亮要防重叠,长词优先是硬规则
"JavaScript" 和 "Script",如果先匹配短词,"Script" 可能被插进已闭合的 里,导致嵌套非法(JavaScript)。浏览器会自动修正为两个独立 ,但语义断裂、样式错位。
"JavaScript",再处理 "Script"
String.prototype.indexOf() 手动扫描位置,跳过已被标记的区间Range + DocumentFragment 方案,完全绕过字符串拼接,没做 XSS 过滤,用户搜 就会触发脚本执行。动态插入前必须 escape HTML 实体或使用 textContent 回退机制。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










