2

抽出したコンテンツに「スパン」があるかどうかを知る必要があります。

textareaから選択を取得する単純なjs部分:

...
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 に答える