Заменить выбранный HTML только в определенном div - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу выбрать HTML из того, что выберет пользователь в contenteditable div.Я нашел некоторый код для извлечения HTML-кода из выделенной области, но он не ограничивается только div.

Что я хочу сделать, это скопировать выделенный HTML-код, обернуть вокруг него теги, а затем заменить выделение на него,Таким образом, 'test' станет, например, ' test '.

<div contenteditable="true" class="body" id="bodydiv"></div>

function getSelectionHtml() {
    var html = "";
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var container = document.createElement("div");
            for (var i = 0, len = sel.rangeCount; i < len; ++i) {
                container.appendChild(sel.getRangeAt(i).cloneContents());
            }
            html = container.innerHTML;
        }
    } else if (typeof document.selection != "undefined") {
        if (document.selection.type == "Text") {
            html = document.selection.createRange().htmlText;
        }
    }
}

1 Ответ

0 голосов
/ 21 декабря 2018

HI для получения содержимого (текста) внутри выбранного div. Я создал небольшой код, который вы можете проверить, работает ли он для вас:

$(document).ready(function(){
         $(document).bind('mouseup', function(){
         var content =  getSelected();
            content = "<b>"+content+"</b>";
            $('#selected').html(content);
        });
});

    function getSelected(){
        var t;
        if(window.getSelection){
           t = window.getSelection();
           var start = t.focusOffset;
           var end = t.baseOffset;
           t = t.anchorNode.data;
           t = t.slice(start, end);
        }  else if (document.selection) {
             t = document.selection.createRange().text;
        }
        return t;
    }

И

<div id="selected"></div>

Надеюсь, это поможет.

...