這個原理實在是太簡單了!對於支持富文本編輯的瀏覽器來說,其實就是設置 document 的 designMode 屬性為 on 後,再通過執行 document.execCommand('commandName'[, UIFlag[, value]]) 即可。commandName 和 value 可以在MSDN 上和MDC 上找到,它們就是我們創建各種格式的命令,比方說,我們要加粗字體,執行 document.execCommand('bold', false) 即可。很簡單是吧?但是值得註意的是,通常是選中了文本後才執行命令,被選中的文本才被格式化。對於未選中的文本進行這個命令,各瀏覽器有不同的處理方式,比方 IE 可能是對位於光標中的標簽內容進行格式化,而其它瀏覽器不做任何處理,這超出本文的內容,不細述。同時需要註意的是,UIFlag 這個參數設置為 true 表示 display any user interface triggered by the command (if any), 在我們今天的教程中都是 false, 而 value 也只在某些 commandName 中才有,具體參考以上剛給出的兩個鏈接。
為了不影響當前 document, 通常的做法是在頁面中嵌入壹個 iframe 元素,然後對這個 iframe 內的 document(通過 iframe.contentWindow.document 獲得)進行操作。
十分簡單,是吧?下面我們來動手做壹個。