JavaScrippt How to extract link from selected text

http://stackoverflow.com/questions/18418533/javascrippt-how-to-extract-link-from-selected-text

by tokkonoPapa

HTML

<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
<p id="sample">Lorem Ipsum is <a href="http://example.com">simply <b>dummy</b> text</a> of the printing and typesetting industry. Here is <a title="test" href="http://www.example.com">another link</a> for testing.</p>
<p>Result: <span id="results"></span></p>

JavaScript

function addEvent(elem, event, func) {
    if (elem.addEventListener) {
        elem.addEventListener(event, func, false);
    } else {
        elem.attachEvent('on' + event, func);
    }
}

function getSelectedHTML(event) {
    // http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/ranges.html
    var range = window.getSelection ? window.getSelection()  /* W3C */
    : document.getSelection ? document.getSelection() /* redundant? */
    : document.selection ? document.selection.createRange()   /* IE */
    : null;

    if (range) {
        if (range.getRangeAt) {
            range = range.getRangeAt(0);
        } else if (range.setStart) { // Safari 1.3
            // Create range by itself
            range.setStart(range.anchorNode, range.anchorOffset);
            range.setEnd(range.focusNode, range.focusOffset);
        } else {
            // IE is already reange
        }

        var html = null, link = null;
        if (range.cloneContents) {
            var dummy = document.createElement('div');
            dummy.appendChild(range.cloneContents());
            html = dummy.innerHTML;
        } else {
            html = range.htmlText; /* IE */
        }
        
        if (html) {
            console.log(html);
            link = html.match(/<a.*?href\s*?=['"](.*?)['"]/);
            return link ? link[1] : null;
        }
    }

    return null;
}

// we can use 'mouseup', 'mousedown', 'touchend', 'touchstart' or these combination.
var elem = document.getElementById('sample');
addEvent(elem, 'mouseup', function() {
    var link = getSelectedHTML();
    document.getElementById('results').innerHTML = link;
});