javascript - mark.js markRanges() 不尊重 HTML 元素
问题描述
我正在使用 mark.js 的markRanges()方法来突出显示具有起始位置和长度的范围,但是,它不尊重 HTML 元素,例如换行元素。文档说明必须指定起始位置,包括空格字符。
例如,以下 HTML:
<div contenteditable="true" id="text">hi.<br><br>I'm quite well.<br></div>
当用开始 15 和长度 5 标记范围时:
var elem = document.getElementById('text');
var instance = new Mark(elem);
var options = {
"element": "mark"
};
instance.markRanges([{
start: 15,
length: 5
}], options);
单词“相当”应该被突出显示,然而,它将突出显示世界的最后两个字母“我们” ,因为markRanges () 方法不计算两个进行中的<br>
换行元素的字符。
解决方案
这不是一个错误。相反,通过空格,它们并不意味着<br>
标签和<p>
标签。标签不算作空白。相反,它们表示实际的文本空格、换行符、空格和制表符,即使浏览器没有呈现它们。
举个例子,稍微调整一下:
<div contenteditable="true" id="text">hi.
I'm quite well.<br>
“hi”之间有一个换行符(ASCII 字符 13 或 10)和几个空格(ASCII 字符 32)。和“我是”。浏览器不会显示大部分空格,而只会显示一个空格。即便如此,“相当”现在排在第 15 位,因此会以黄色突出显示。
推荐阅读
- apache-kafka - KafkaConsumer:如果在开始偏移之前提交会发生什么?
- node.js - 下面几款web服务器的I/O策略是什么?
- swift - 在 Swift 4 中,将 String 值类型转换为 Float 值的正确方法是什么?
- zombie-process - 为什么 boost::process::spawn 会留下僵尸?
- java - 与 AIS 转发器的 Android 套接字连接引发 IOException
- r - 使用插入符号 rfe 进行特征选择并使用另一种方法进行训练
- java - GCP Pubsub 低消息/秒的高延迟
- jquery - jquery - 将变量推入数组而不发出警报
- javascript - 如何更新 index.html 文件中的 javascript?
- artifactory - Artifactory cli - 下载现有文件