创建一个新的高亮器实例
要进行高亮操作的目标DOM元素
高亮器配置选项
事件回调函数
const container = document.getElementById('content')
// 使用默认配置
const highlighter1 = new Highlighter(container)
// 自定义配置
const highlighter2 = new Highlighter(container, {
highlightTag: 'span',
highlightClass: 'search-highlight',
activeClass: 'current-match',
skipTags: ['SCRIPT', 'STYLE', 'CODE'],
scrollOptions: { behavior: 'auto', block: 'nearest' },
smartScroll: false, // 禁用智能滚动
scrollPadding: 30 // 设置较小的视口内边距
})
// 带回调的配置
const highlighter3 = new Highlighter(container, {
highlightClass: 'result'
}, {
onHighlightApplied: (count) => console.log(`找到 ${count} 个匹配项`),
onNavigate: (index, total) => console.log(`${index + 1}/${total}`)
})
应用高亮到指定关键词(异步版本)
在目标元素中搜索并高亮显示指定的关键词。会自动清理之前的高亮, 并为新的匹配项设置高亮样式。完成后会自动定位到第一个匹配项。 异步版本支持性能优化,适合处理大文档。
要高亮的关键词,可以是单个字符串或字符串数组,空字符串或仅包含空白字符的字符串将被忽略
高亮选项配置
匹配项的数量
const highlighter = new Highlighter(document.body)
// 基本高亮(单个关键词)
const count1 = await highlighter.apply('JavaScript')
// 多个关键词高亮
const count2 = await highlighter.apply(['JavaScript', 'TypeScript', 'React'])
// 区分大小写的高亮
const count3 = await highlighter.apply(['JavaScript', 'API'], { caseSensitive: true })
// 只匹配完整单词
const count4 = await highlighter.apply(['script', 'code'], { wholeWord: true })
// 组合选项
const count5 = await highlighter.apply(['API', 'SDK'], {
caseSensitive: true,
wholeWord: true
})
使用自定义正则表达式应用高亮(异步版本)
使用提供的正则表达式在目标元素中搜索并高亮显示匹配的文本。 会自动清理之前的高亮,并为新的匹配项设置高亮样式。 异步版本支持性能优化,适合处理大文档。
用于匹配的正则表达式,必须包含全局标志 'g'
匹配项的数量
const highlighter = new Highlighter(document.body)
// 高亮所有邮箱地址
const emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g
const count1 = await highlighter.applyRegex(emailRegex)
// 高亮日期格式 YYYY-MM-DD
const dateRegex = /\d{4}-\d{2}-\d{2}/g
const count2 = await highlighter.applyRegex(dateRegex)
// 高亮 "Chapter" 或 "Section" 后跟数字
const chapterRegex = /(Chapter|Section)\s+\d+/gi
const count3 = await highlighter.applyRegex(chapterRegex)
使用自定义正则表达式应用高亮(同步版本)
使用提供的正则表达式在目标元素中搜索并高亮显示匹配的文本。 会自动清理之前的高亮,并为新的匹配项设置高亮样式。 同步版本不包含性能优化,适合处理小到中等大小的文档。
用于匹配的正则表达式,必须包含全局标志 'g'
匹配项的数量
应用高亮到指定关键词(同步版本)
在目标元素中搜索并高亮显示指定的关键词。会自动清理之前的高亮, 并为新的匹配项设置高亮样式。完成后会自动定位到第一个匹配项。 同步版本不包含性能优化,适合处理小到中等大小的文档。
要高亮的关键词,可以是单个字符串或字符串数组,空字符串或仅包含空白字符的字符串将被忽略
高亮选项配置
匹配项的数量
const highlighter = new Highlighter(document.body)
// 基本高亮(单个关键词)
const count1 = highlighter.applySync('JavaScript')
// 多个关键词高亮
const count2 = highlighter.applySync(['JavaScript', 'TypeScript', 'React'])
// 区分大小写的高亮
const count3 = highlighter.applySync(['JavaScript', 'API'], { caseSensitive: true })
// 只匹配完整单词
const count4 = highlighter.applySync(['script', 'code'], { wholeWord: true })
// 组合选项
const count5 = highlighter.applySync(['API', 'SDK'], {
caseSensitive: true,
wholeWord: true
})
销毁高亮器实例
清理所有内部状态、引用和事件监听器(如果有)。 在组件卸载时调用此方法以防止内存泄漏。
查找下一个在视口外的匹配项的索引
找到的元素的索引,如果所有元素都在视口内则返回 -1
查找上一个在视口外的匹配项的索引
找到的元素的索引,如果所有元素都在视口内则返回 -1
获取当前高亮的模式
当前高亮的模式,可能是关键词数组或正则表达式
const highlighter = new Highlighter(document.body)
// 使用关键词高亮
await highlighter.apply(['JavaScript', 'tutorial'])
console.log(highlighter.getCurrentPattern()) // ['JavaScript', 'tutorial']
// 使用正则表达式高亮
const emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g
await highlighter.applyRegex(emailRegex)
console.log(highlighter.getCurrentPattern()) // RegExp object
跳转到下一个在视口外的匹配项
如果找到了屏幕外的匹配项,则直接跳转到那里。 如果所有匹配项都在视口内,则行为与 next() 相同,以确保总有反馈。
是否成功执行了跳转或导航操作
跳转到上一个在视口外的匹配项
如果找到了屏幕外的匹配项,则直接跳转到那里。 如果所有匹配项都在视口内,则行为与 previous() 相同,以确保总有反馈。
是否成功执行了跳转或导航操作
更新配置
动态更新高亮器的配置。注意:某些配置更改可能需要重新应用高亮才能生效。
新的配置选项
文本高亮器类
提供在指定DOM元素中高亮显示关键词的功能,支持导航到不同的匹配项。 可以配置高亮样式、标签类型,并提供前进/后退导航功能。
Example