0

HTMLとしてフォーマットされたユーザーが選択テキストを取得するJavascriptルーチンがあります。

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/

コードは正常に機能しますが、選択にはaftereveryとが含ま\r\nれます。なぜこれらが追加され、どの時点で追加されるのですか?andタグにはすでに改行が含まれているため、冗長に見えます。</p><br/><p><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 に答える