JSFiddle - React, Tailwind, and code Playground

by magicaj

HTML

<div>adam@<wbr>test.<wbr />com</div>

JavaScript

$(document).on('copy', function(e) {
    var selHtml = getSelHtml();
    var selection = window.getSelection ? window.getSelection() : document.selection;
        
    if (selHtml) {        
        var $copyHolder = $('<div>')
            .css({ position: 'absolute', left: '-99999px' })
            .html(selHtml); 
        
        $copyHolder.find('wbr').remove();

        $(document.body).append($copyHolder);
        selection.selectAllChildren($copyHolder[0]);
        
        window.setTimeout(function() {
            $copyHolder.remove();
        }, 0);
    }
});

function getSelHtml() {
    try {
        if (window.getSelection) {            
            var sel = window.getSelection(), range;
            
            if (sel.getRangeAt) {
                range = sel.getRangeAt(0);
            } else {
                range = doc.createRange();
                range.setStart(sel.anchorNode, sel.anchorOffset);
                range.setEnd(sel.focusNode, sel.focusOffset);
            }
            
            return $('<div>').append(range.cloneContents()).html();            
        } else if (document.selection) {
            return document.selection.createRange().htmlText;
        }
    } catch (e) {}
}