0

我有一个 Javascript 例程,它通过格式化为 HTML 的用户检索选择文本:

function getHTMLOfSelection() {
    var range;
    if (document.selection && document.selection.createRange) {
        range = document.selection.createRange();
        return range.htmlText;
    }
    else if (window.getSelection) {
        var selection = window.getSelection();
        if (selection.rangeCount > 0) {
            range = selection.getRangeAt(0);
            var clonedSelection = range.cloneContents();
            var div = document.createElement('div');
            div.appendChild(clonedSelection);
            return div.innerHTML;
        }
        else {
            return '';
        }
    }
    else {
        return '';
    }
}

使用小提琴,确保首先选择引用的文本:

http://jsfiddle.net/userdude/Y4BBq/13/

该代码工作正常,但是,选择\r\n在每个</p>and之后都包含一个<br/>。为什么要添加这些以及在什么时候添加?这似乎是多余的,因为<p>and<br>标记已经包含了新行。

4

1 回答 1

1

根据 OP 的评论,如果您想返回没有换行符的 HTML,您可以使用正则表达式将Carriage Return( \n) 和Line Feed( \r) 字符全局替换为空字符串:

//apply this to remove line breaks from your strings, where str is the string
str = str.replace(/\n|\r/g, '');
//or directly in the return inside of your functions:
return range.htmlText.replace(/\n|\r/g, '');
return div.innerHTML.replace(/\n|\r/g, '');

这将删除所有换行符,请注意如果您选择文档的较长部分,HTML 将失去可读性。

JSFiddle

于 2012-06-10T20:39:06.787 回答