百度編輯器UEditor不能插入視頻的解決方法

xssFilter致使插入視頻異常,編輯器在切換源碼的過程當中過濾掉img的_url屬性(用來存儲視頻url)_src/plugins/video.js裏處理的是_url,而不是_src。<基本出處參見:https://github.com/fex-team/ueditor/pull/2957/commits/d4b875ce165b3225929496c2d85848afbff0deeb?diff=split >javascript

一、在配置文件ueditor.config.js中,定位 //xss過濾白名單,即,whitList:{ },對 img: 增長 「_url」 屬性:php

二、在 video 標籤後新增3給標籤,使Ueditor分別能支持embed標籤和iframe標籤(此處原理參見 另外一篇博客):html

代碼:前端

source: ['src', 'type'],
 embed: ['type', 'class', 'pluginspage', 'src', 'width', 'height', 'align', 'style', 'wmode', 'play',  
      +  'autoplay','loop', 'menu', 'allowscriptaccess', 'allowfullscreen', 'controls', 'preload'],
 iframe: ['src', 'class', 'height', 'width', 'max-width', 'max-height', 'align', 'frameborder', 'allowfullscreen']

其中【】中的各個字段爲前面相應標籤的屬性 好比:<iframe src="", width="", height=""></iframe>。java

這樣,在編輯器中就能夠引用優酷、騰訊視頻的iframe通用代碼和embed html代碼;移動端通常引用iframe,可設置屬性,使其適應設備。(這裏,建議切換到源碼模式,插入相應的視頻代碼embed或iframe。其中iframe可編輯大小,優酷embed有效,騰訊embed無效;且騰訊視頻的iframe可設置爲自動播放,優選git

 

注意:經過以上兩步後,可能出現的新問題是,前端頁面不解析<iframe>標籤,而是將其原樣輸出:github

解決方法:用html_entity_decode()函數把HTML實體轉換爲字符,該函數爲php函數。數據庫

假設$string爲從數據庫中取出的編輯器存入的內容:經html_entity_decode($string)後,再輸出到前端頁面。xss

(很是奇怪,不知啥緣由,輸入embed標籤插入視頻沒問題;輸入<iframe>標籤時,數據庫中的數據居然是將  <> 轉義過的,成了&lt; 和 &gt; 而且好像只有iframe這一個標籤是這樣的,因此前端頁面必須用html_entity_decode()轉換再輸出。對UEditor有研究透徹的朋友,歡迎指出更好的解決方案。)編輯器

相關文章
相關標籤/搜索