2

我需要知道我提取的内容中是否存在“跨度”。

简单的 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/

4

1 回答 1

0

您的代码并不遥远。这是一个更新的演示:

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);
}
于 2012-10-11T14:45:59.810 回答