0

嘿,你们这些了不起的聪明人,

我需要一些有关用户输入的帮助。我正在创建一个基本的文字处理器,我需要将某个选定区域加粗。用户将用鼠标突出显示该区域并按下按钮。然后,计算机会将其突出显示的文本替换为<b>+originaltext+</b>,据推测使其变为粗体。问题是,计算机正在将那些打开和关闭的胡萝卜变成&lt;并因此阻止它完成工作。

如何强制计算机将其作为真正的粗体标签移交?

这是我基本上在做的事情:

function replaceSelectedText() {
var sel, range, txtstuff;
if (window.getSelection) {
    txtstuff = '<b>'+window.getSelection()+'</b>'
    sel = window.getSelection();
    alert(txtstuff, sel);
    if (sel.rangeCount) {
        range = sel.getRangeAt(0);
        range.deleteContents();
        range.insertNode(document.createTextNode(txtstuff));
    }
} else if (document.selection && document.selection.createRange) {
    range = document.selection.createRange();
    range.text = txtstuff;
}
}

提前感谢您的帮助!

更新:这是在一个可编辑的 div 中。

4

2 回答 2

1

工作代码:

function replaceSelectedText() {
    var sel, range, txtstuff;
    if (window.getSelection) {
        txtstuff = '<b>'+window.getSelection()+'</b>'
        sel = window.getSelection();
        alert(txtstuff, sel);
        if (sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();
            var b = document.createElement('b');
            b.innerHTML = txtstuff;
            range.insertNode(b);
        }
    } else if (document.selection && document.selection.createRange) {
        range = document.selection.createRange();
        range.text = txtstuff;
    }
}
于 2013-11-19T23:14:28.853 回答
0

阅读 document.execCommand https://developer.mozilla.org/en-US/docs/Rich-Text_Editing_in_Mozilla

您的情况下的语法是:

document.execCommand('bold');

尽管它是 Mozilla 的文档,但它是跨浏览器的。它也不依赖于可能有问题的光标选择。

于 2013-11-19T23:20:44.383 回答