From Javascript's kiss

(function(){
    var global = this;
    //获取Range的开始index,在FF等浏览器下支持
    function getSelectionStart(o){
        return o.selectionStart;
    };
    //获取Range的结束index,在FF等浏览器下支持
    function getSelectionEnd(o){
        return o.selectionEnd;
    };
    //获取选择的文本
    function getRangeText(doc, el){
        var text = "";
		//如果是text或者textarea控件
        if ((el.nodeName.toLowerCase() === "input" || el.nodeName.toLowerCase() === "textarea") && document.getSelection) {
            s = getSelectionStart(el);
            end = getSelectionEnd(el);
            text = el.value.slice(s, end);
        }
        else {
            if (doc.getSelection) {  //IE
                text = doc.getSelection() || doc.getSelection();
            }
            else 
                if (doc.selection.createRange) {
                    text = doc.selection.createRange().text;
                }
        }
        return text;
    };
    //判断是否有iframe框架
    function hasIframe(){
        return document.getElementsByTagName("iframe").length > 0;
    }
    //获取全部iframe框架引用
    function getIframeObject(){
        var iframes = document.getElementsByTagName("iframe");
        var docs = [];
        //跨浏览器
        for (var i = 0; iframes[i]; i++) {
            var doc = iframes[i].document;
            if (iframes[i].contentDocument) {
                doc = iframes[i].contentDocument;
            }
            else 
                if (iframes[i].contentWindow.document) {
                    doc = iframes[i].contentWindow.document;
                }
            docs.push(doc);
        }
        return docs;
    }
    //添加事件
    function addEvent(elem, t, handler){
        if (elem.addEventListener) {
            elem.addEventListener(t, handler, false);
        }
        else 
            if (elem.attachEvent) {
                elem.attachEvent("on" + t, handler);
            }
    }
    
    //声明Range对象
    !global.Range ? global.Range = {} : null;
    //mouseup事件的回调函数
    function handler(doc, e){
        var text = "";
        var el = e.target || e.srcElement;
        text = getRangeText(doc, el);
        if (text == "") 
            return;
        Range.text = text;
        Range.callback();
    }
    addEvent(window, "load", function(e){
        //本文档的document的mouseup事件驱动程序
        addEvent(document, "mouseup", function(e){
            handler(document, e);
        });
        //如果存在iframe框架,则给iframe框架添加mouseup事件驱动程序
        if (hasIframe()) {
            var docs = getIframeObject();
            for (var i = 0; docs[i]; i++) {
                (function(doc){
                    addEvent(doc, "mouseup", function(e){
                        handler(doc, e);
                    });
                })(docs[i]);
            }
        }
    });
})();
You can get text from here.