javascript - 使用 Javascript 突出显示范围不起作用

标签 javascript html uiwebview range

以下用于突出显示范围的代码失败。 Try out the code.

function rangeFromString(rangeString)
{
     var rangeStringSplit = rangeString.split(/\|/g);
     var range = document.createRange();
     var node = document.evaluate(rangeStringSplit[0], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
     range.setStart(node, Number(rangeStringSplit[1]));
     node = document.evaluate(rangeStringSplit[2], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
     range.setEnd(node, Number(rangeStringSplit[3]));
     console.log(range);
     return range;
}

function highlightRangeString(rangeString,color)
{
     if (rangeString != null)
     {
          var range = rangeFromString(rangeString);
          console.log(range);

          var sel = window.getSelection();
          sel.removeAllRanges();

          sel.addRange(range);
          document.designMode = "on";
          document.execCommand("hiliteColor", false, "#"+color);
          sel.removeAllRanges();
          document.designMode = "off";
     }
}

我试过下面的代码,

highlightRangeString("/HTML[1]/BODY[1]/DIV[1]/DIV[2]/P[1]/SPAN[1]/text()[1]|2|/HTML[1]/BODY[1]/DIV[1]/DIV[2]/P[1]/SPAN[1]/text()[1]|20", "ff0000");

这段代码有什么问题?

我如何选择并应用突出显示到一个范围?

最佳答案

这是因为您要突出显示的字符是文本节点中的空白字符,并且在呈现的 HTML 中折叠,因此包含它们的选择也会折叠。如果删除 <span> 中的换行符和缩进包含文本的元素,它将按您预期的方式工作。

演示:http://jsfiddle.net/zjd3d7ud/5/

关于javascript - 使用 Javascript 突出显示范围不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27182119/

相关文章:

ios - Swift UIWebView 不加载 http 站点

javascript - 实例方法在 Sequelize 4 上不起作用

javascript - 下拉表单和 JavaScript

html - Safari 9.1.3 边框宽度问题

javascript - 为什么没有点击链接就出现了登录框?

javascript - 我正在尝试在 JS 中创建一个函数来搜索 HTML 表中的 <td> 标签,但如果我在其中使用任何 <th></th> 标签,它就不起作用

iphone - 在 UIWebView 中获取当前 url

iphone - webViewDidFinishLoad 之前的 heightForRowAtIndexPath

asp.net - IsClientScriptIninclude注册的问题

javascript - 如何使用angular创建可重用的音频播放器组件