!!!每次改動後記得,清除一下瀏覽器緩存再試 !!! html
1. 修復編輯時視頻不能預覽問題 node
在 ueditor.all.js 中 ,搜索 me.fireEvent('beforesetcontent', html);git
將下列註釋github
//修復編輯是視頻不能預覽問題 // me.fireEvent('beforesetcontent', html); // var root = UE.htmlparser(html); // me.filterInputRule(root); // html = root.toHtml();
搜索 me.commands["insertvideo"]
瀏覽器
把緩存
html.push(creatInsertStr( vi.url, vi.width || 420, vi.height || 280, id + i, null, cl, 'image'));
改爲服務器
html.push(creatInsertStr( vi.url, vi.width || 420, vi.height || 280, id + i, null, cl, 'video'));
2. 插入視頻的時候。在預覽的窗口提示 「輸入的視頻地址有誤,請檢查後再試!」如:app
解決方法:xss
1.在ueditor.all.js中 搜索 me.commands["insertvideo"] 編輯器
//此處將 edui-faked-video 改成 edui-faked,防止後面將此處替換爲image標籤
// 此處將image改成embed/video ,實現 1.實時預覽視頻, 2.修復了第一次插入視頻保存後,刷新後再保存會致使視頻丟失的bug
me.commands["insertvideo"] = { execCommand: function (cmd, videoObjs, type){ videoObjs = utils.isArray(videoObjs)?videoObjs:[videoObjs]; var html = [],id = 'tmpVedio', cl; for(var i=0,vi,len = videoObjs.length;i<len;i++){ vi = videoObjs[i]; //cl = (type == 'upload' ? 'edui-upload-video video-js vjs-default-skin':'edui-faked-video'); //html.push(creatInsertStr( vi.url, vi.width || 420, vi.height || 280, id + i, null, cl, 'image')); //此處將 edui-faked-video 改成 edui-faked,防止後面將此處替換爲image標籤 cl = (type == 'upload' ? 'edui-upload-video video-js vjs-default-skin':'edui-faked'); // 此處將image改成embed/video , 實現實時預覽視頻,且修復了第一次插入視頻保存後,刷新後再保存會致使視頻丟失的bug html.push(creatInsertStr( vi.url, vi.width || 420, vi.height || 280, id + i, null, cl, 'video')); } me.execCommand("inserthtml",html.join(""),true); var rng = this.selection.getRange(); ...
2.在ueditor.config.js中 搜索 whitList
img 字段中 添加"_url"
img:['src', 'alt', 'title', 'width', 'height', 'id', '_src','_url', 'loadingclass', 'class', 'data-latex', 'style', 'url'],//加了style和url
video 後面添加以下規則字段(video不要忘記加逗號)
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']
3.在dialogs/video/video.js 搜索 function createPreviewVideo(url){ 把下面的內容替換
function createPreviewVideo(url){ if ( !url )return; var conUrl = convert_url(url); conUrl = utils.unhtmlForUrl(conUrl); $G("preview").innerHTML = // '<div class="previewMsg"><span>'+lang.urlError+'</span></div>'+ // '<embed class="previewVideo" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"' + // ' src="' + conUrl + '"' + // ' width="' + 420 + '"' + // ' height="' + 280 + '"' + // ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >' + // '</embed>'; //換成video標籤 '<video' + ' src="' + conUrl + '"' + ' width="' + 420 + '"' + ' height="' + 280 + '"' + ' autoplay' + ' controls="controls">'+ '</video>'; }
切換 html 按鈕src連接丟失問題
在ueditor.config.js文件的 361行左右 ,
inputXssFilter:true 修改成 ,inputXssFilter:false
// xss 過濾是否開啓,inserthtml等操做 ,xssFilterRules: true //input xss過濾 //,inputXssFilter: true ,inputXssFilter: false //解決視頻回顯src消失 //output xss過濾 ,outputXssFilter: true // xss過濾白名單 名單來源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js ,whitList: {
...
在 ueditor.all.js 中 搜索 編輯器默認的過濾轉換機制 or UE.plugins['defaultfilter']
加上return
// plugins/defaultfilter.js ///import core ///plugin 編輯器默認的過濾轉換機制 UE.plugins['defaultfilter'] = function () { return; var me = this; me.setOpt({ ...
找到 case 'img': ,註釋代碼
case 'img': //todo base64暫時去掉,後邊作遠程圖片上傳後,幹掉這個 // if (val = node.getAttr('src')) { // if (/^data:/.test(val)) { // node.parentNode.removeChild(node); // break; // } // } // node.setAttr('_src', node.getAttr('src')); break; ...
預先保存一張封面到服務器 假設路徑爲 /static/images/video-poster.png
在 ueditor.config.js 中 搜索 whitList 在 video 中字段 添加 poster
video: ['autoplay', '_src', 'poster', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style', 'id'],
修改ueditor.all.js中 搜索 case 'video': 添加 poster 字段 (經過js獲取當前域名,拼接上保存到服務器上的圖片做爲url)
case 'embed': //str = '<embed type="application/x-shockwave-flash" class="' + classname + '" pluginspage="http://www.macromedia.com/go/getflashplayer"' + str = '<embed class="' + classname + '" pluginspage="http://www.macromedia.com/go/getflashplayer"' + ' src="' + utils.html(url) + '" width="' + width + '" height="' + height + '"' + (align ? ' style="float:' + align + '"': '') + ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >'; break; case 'video': var ext = url.substr(url.lastIndexOf('.') + 1); //當前域名window.location.protocol+"//"+window.location.host var locationHost = window.location.protocol+"//"+window.location.host; if(ext == 'ogv') ext = 'ogg'; str = '<video' + (id ? ' id="' + id + '"' : '') + ' class="' + classname + ' video-js" ' + (align ? ' style="float:' + align + '"': '') + ' controls preload="none" width="' + width + '" height="' + height + '" poster="'+locationHost+'/static/images/video-poster.png" src="' + url + '" data-setup="{}">' + '<source src="' + url + '" type="video/' + ext + '" /></video>'; break;