我需要知道我提取的内容中是否存在“跨度”。
简单的 js 部分,从 textarea 中获取选择:
...
selection = this.getWin().getSelection().getRangeAt(0);
content = selection.extractContents();
alert(content)// this gets documentFragment
alert(content.firstChild)//null
fontEl = document.createElement ("span")
fontEl.appendChild(content);
alert(fontEl.outerHTML)// works ok. but now i have 2 spans if there was one before append
这是我的 jsfiddle。我测试更改字体大小。它有效,但由于这个问题,它正在发送垃圾邮件。 http://jsfiddle.net/DCGRg/73/
最佳答案
您的代码离我们不远了。这是一个更新的演示:
相关代码如下:
var font_size = combo.getValue();
var selection = this.getWin().getSelection();
if (selection.rangeCount > 0) {
var range = selection.getRangeAt(0);
var content = range.extractContents();
var fontEl = this.getWin().document.createElement("span");
fontEl.style.fontSize = font_size + 'px';
fontEl.appendChild(content);
range.insertNode(fontEl);
selection.selectAllChildren(fontEl);
}
关于javascript - 如何获取documentFragment中的子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12840916/