现在我通过s = window.getSelection()和range = s.getRangeAt(0)(浏览器的隐含)来捕获用户的文本选择.每当
内的选择做了,我可以轻松地调用range.surroundContents(document.createElement(“em”)),使选定的文本用<
em>标签.
然而,在这个例子中,
This is the Foo paragraph.
This is the Bar paragraph.
This is the Baz paragraph.
当用户从Foo到Baz进行文本选择时,我无法调用range.surroundContents:Firefox失败,范围的边界点不符合特定要求.“code:”1,因为选择不是有效的HTML.
在这种情况下,我想以某种方式在DOM中获取以下状态:
This is the Foo paragraph.
This is the Bar paragraph.
This is the Baz paragraph.
有任何想法吗?
FYI:我一直在尝试使用Range API,但我看不到直接的方式来实现这一结果.同
var r = document.createRange();
r.setStart(range.startContainer, range.startOffset);
r.setEnd(range.endContainer, range.endOffset+40);
selection.addRange(r);
我最终可以通过重新定位偏移来劫持某些东西,但只能用于“开始”和“结束”容器! (即在这种情况下,Bar段落,我该如何包装?)