麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

自己打造HTML在線編輯器的實現難點分析

2024-07-21 02:53:52
字體:
來源:轉載
供稿:網友
到目前為止,我已經開發了兩個HTML編輯器了,一個用在公司的CMS項目,另一個用在這個Blog(TidyEditor,暫時沒有單獨發布)。下面總結一下開發的難點以及應對方法。
 

HTML在線編輯器實際上是什么

其實有好幾種實現方式,目前用得最多、兼容性最好的還是iframe方式。

<iframe src="" frameborder="0"></iframe>

只有這個空iframe是不行的,還要用Javascript把它設成可編輯:

iframe.contentWindow.document.designMode = "on";
iframe.contentWindow.document.contentEditable = true;

換而言之,HTML在線編輯器就是一個可編輯的iframe

加粗、斜體、下劃線、加鏈接等功能如何實現

瀏覽器已經提供了實現這些功能的接口execCommand

iframe.contentWindow.document.execCommand(cmd, isDefaultShowUI, value);

這三個參數的意思分別是:

  • cmd:命令文本,有好多,IE的可以看這里,Firefox的可以看這里。
  • isDefaultShowUI:是否默認顯示交互界面,比如加鏈接的時候,可以通過界面填入鏈接。不過這個參數存在兼容性問題,一般設為false將其禁用,并另外制作交互界面。
  • value:傳入的值,某些命令可以省略。

execCommand的問題是,生成的代碼可能不標準,比如在IE下,文字加粗用的是b標簽而不是strong標簽。

交互問題

用戶不可能總是在編輯器中輸入,比如加粗、插入圖片等功能是通過按鈕操作的。假設用戶要加粗一段選中的文字,當他按了加粗按鈕后,選區以及焦點也會跟著跑到那去,因此選區(選中的文字)丟失,操作也就無法完成;同理,插入圖片時插入位置也會丟失。

也就是說,要保存最后出現在編輯器中的選區。我采取的方案是,當焦點在編輯器內的時候,用一個定時器(setInterval)定時獲取當前選區。選區編程平時很少用,做起來也有很多兼容性問題,主要是參考微軟的MSDN(TextRange ControlRange)和Mozilla的MDC(Range Selection)了。

回車問題

在IE下,按回車是換段落,生成<p>,但在Firefox下是換行,生成的是<br>。要解決這個問題,就要監聽keydown事件,如果檢測到按鍵是回車,就插入“<p></p>”。

獲取標準的代碼

如何獲取編輯的內容呢?這個問題很簡單,只要獲取iframe頁面body中的innerHTML就可以了:

var content = iframe.contentWindow.document.body.innerHTML;

然而,IE下的innerHTML非常不標準:標簽名是大寫的,屬性沒有引號包起來,單標簽也沒有結束符……即便是Firefox下獲取的代碼,也有少量瑕疵。這個時候就要用正則表達式對代碼進行標準化處理。

總結

不多說了,做一遍HTML編輯器,你就會知道CKEditor是多么強大。



注:相關教程知識閱讀請移步到編輯器頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线成人精品视频 | 国产精品视频自拍 | 少妇一级淫片免费放播放 | 欧美性猛交xxx乱大交3蜜桃 | 国产精选电影免费在线观看 | 国产成人免费精品 | 欧美精品一区自拍a毛片在线视频 | 亚洲欧美日韩一区二区三区在线观看 | 亚洲小视频网站 | 黄色特级| 他也色在线视频 | 国产成年人视频 | 国产精品一区2区3区 | 欧美日韩中文字幕在线视频 | 久久国产精品二国产精品中国洋人 | 视频一区二区在线播放 | 一区免费 | 欧美中文字幕一区二区三区亚洲 | 国产乱淫a∨片免费视频 | 中文字幕在线看第二 | 欧美三级欧美成人高清www | 性生活香蕉视频 | 特级毛片免费 | 久久精品99久久久久久2456 | 日韩在线欧美在线 | 国产午夜精品久久久久久久蜜臀 | 97zyz成人免费视频 | 欧美成人午夜精品久久久 | 在线视频观看国产 | 亚洲小视频在线播放 | 午夜在线观看视频网站 | 久草在线资源观看 | 欧美爱爱一区二区 | 欧美××××黑人××性爽 | 在线a毛片免费视频观看 | 少妇的肉体的满足毛片 | 成人福利视频导航 | 午夜精品福利影院 | 哪里可以看免费的av | 亚州精品在线视频 | av影院在线播放 |