查看DOM Range 规范。您可以使用以下方法Range
从 Firefox 中的用户选择中获取:
var range = window.getSelection().getRangeAt(0);
注意一些浏览器,包括火狐,允许多选,可以通过getRangeAt()
选择的方法来访问。
将Range
在这些节点中的DOM节点和偏移量来表示。一旦你得到了你的Range
,就不是那么简单地做你想做的事,因为范围的边界可能在 DOM 树的不同级别的不同节点中,所以简单地用标签包围范围的内容并不总是可行的。您可以执行以下操作,但它会创建一个新的块元素来包含所选内容:
var range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
var div = document.createElement("div");
div.style.color = "yellow";
div.appendChild(selectionContents);
range.insertNode(div);
另一个,hacky,替代方法是使用修改选择的execCommand()
方法document
(例如通过将其设置为特定颜色),然后使用document.querySelectorAll
或 某些选择器库来选择具有该颜色的元素,然后对它们应用样式。