2008-10-29 70 views

回答

4

歐文有正確的想法。這些庫用iframe替換textarea,然後將iframe的文檔放入designModecontentEditable模式。這實際上使您可以編輯iframe中的html文檔,而瀏覽器則爲您處理光標和所有擊鍵,併爲您提供可調用的樣式變化(粗體,斜體等)的api。然後,當用戶提交表單時,他們會將iframe中的innerHTML複製到原始文本區域中。有關如何啓用此模式以及您可以使用它的更多詳細信息,請參閱:https://developer.mozilla.org/En/Rich-Text_Editing_in_Mozilla

但是,我建議您使用現有的富文本控件庫之一,如果您希望在您的網站上使用此功能。之前我已經構建過一個,並且發現您將花費大量時間處理瀏覽器不一致問題,以便獲得效果良好的內容。除了啓用編輯功能的差異之外,您還需要規範化所創建的html。例如,IE在用戶按下Enter鍵時創建了<br>元素,FF創建了<p>標籤。對於樣式更改,IE使用<b>,<i>等,而FF使用具有樣式屬性的跨度。

5

通常他們會用自己的顯示組件(如div)覆蓋textarea。當用戶輸入時,javascript將輸入內容並在顯示區域應用樣式。 textarea的值是帶有html標籤的文本,以指定的樣式呈現它。因此,用戶可以看到樣式文本。

這是當然的簡單說明。

+0

這是有道理的,但如果一個div位於其上,你會如何看到光標? – Petras 2008-10-29 01:50:53

3

我相信tinymce具體使用表/ iframe用於顯示目的(替代現有的textarea)。準備好保存後,將所有信息複製回textarea進行處理。