首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mark.js markRanges()不尊重HTML元素

mark.js markRanges()不尊重HTML元素
EN

Stack Overflow用户
提问于 2020-09-26 09:49:13
回答 1查看 415关注 0票数 1

我使用Mark.js的markRanges()方法来突出显示具有起始位置和长度的范围,但是它不尊重HTML元素,比如换行元素。文档说明,必须指定起始位置,包括空格字符。

例如,以下HTML:

代码语言:javascript
复制
<div contenteditable="true" id="text">hi.<br><br>I'm quite well.<br></div>

在标出起始为15,长度为5的范围时:

代码语言:javascript
复制
var elem = document.getElementById('text');
var instance = new Mark(elem);
var options = {
  "element": "mark"
};
instance.markRanges([{
  start: 15,
  length: 5
}], options);

但是,应该突出显示“”一词,相反,它将突出显示“ll”这个世界上的最后两个字母,因为markRanges()方法没有计算两个正在进行的<br>换行元素的字符。

我的小提琴https://jsfiddle.net/93swuqa6/

EN

回答 1

Stack Overflow用户

发布于 2020-12-30 01:32:04

这不是虫子。相反,所谓空白,并不是指<br>标记和<p>标记。标签不算作空格。相反,它们意味着实际的文本空白、换行符、空格和制表符,即使浏览器没有呈现它。

以你的例子为例,稍微修改一下:

代码语言:javascript
复制
<div contenteditable="true" id="text">hi.
   I'm quite well.<br>

在“hi”之间有一个换行符(ASCII字符13或10)和几个空格(ASCII字符32)。还有“我是”。浏览器不会显示其中的大部分空间,而是只显示一个空格。即使如此,“相当”现在已经排在第15位,所以会用黄色突出显示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64076179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档