獲取富文本編輯器中的不含HTML標記的純文本


        博客類型的網站,往往需要使用在線的Rich Text Editor給用戶提供發表博客的功能,比如博客園使用的是tinyMCE。但同時也注意到,在每位同學的博客首頁都有“博客預覽”,這是怎么實現的呢?

        預覽的功能其實就是一個從富文本提取簡單文本的功能,把html的一些標記符(如<b></b>、<p></p>、<span></span>、<div></div>等)去掉。正常有兩種方式,一種方式是用正則表達式去除用戶傳給服務器的帶有html標記的富文本,但這種方法因為需要考慮的html元素還是比較多的,也就導致正則表達式較多,而且使用過多的正則表達式會導致效率地下。

        是否有其它比較好的方法呢?通過觀察,會發現在一個格式復雜網頁中,你用鼠標選中某一部分並復制,這時剪切板里的就僅僅是簡單的文本,不包含任何的html標記。我們用鼠標選中文本這件事,JavaScript也是可以完成的,代碼如下:

function SelectText(element) {
    var text = document.getElementById(element);
    if ($.browser.msie) {
        var range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
        //顯示已選中的文本
        alert(window.getSelection().toString());
    }
    else {
        var selection = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
        //顯示已選中的文本
        alert(window.getSelection().toString());
    }
}

DEMO:

        我們再來看看在tinyMCE中應該怎么做。通過查找資料發現,tinyMCE其實已經很好的支持了這個功能,例如你想獲取tinyMCE編輯器里前200個字符:

var ed = tinymce.activeEditor;
var e = ed.getBody();
ed.selection.select(e);
var text = ed.selection.getContent( { 'format' : 'text' } );
var first_200 = text.substr(0, 200);

DEMO:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM