django admin后臺(tái)kindeditor(4.1.10)編輯器支持黏貼圖片

前言:

說(shuō)實(shí)話django后臺(tái)的富文本編輯器有很多,都集成了,比如django-ckeditor等等,但是django-ckeditor支持的功能比較少,悲催的是現(xiàn)在django-ckeditor還只有繁體的,用起來(lái)不爽,如下圖:

所以自己在后臺(tái)折騰了個(gè)kindeditor,但是發(fā)現(xiàn)有很多坑,比如不支持圖片黏貼,寫起文章很不爽,所以記錄一下解決方案吧。

下面是我實(shí)現(xiàn)的效果:

首先是上網(wǎng)搜到要修改kindeditor.js文件

所以按照要求修改了下,發(fā)現(xiàn)并沒(méi)有卵用,然后又修改kindeditor-all.js文件,發(fā)現(xiàn)依然沒(méi)有卵用

然后去后臺(tái)前端看源碼發(fā)現(xiàn)引用的是壓縮后的min文件

然后又傻呵呵的修改min文件,發(fā)現(xiàn)要修改的太多了,因?yàn)槎际菈嚎s后的混淆文件,變量名字都不一樣,所以抑郁了,折騰了一小會(huì),靈機(jī)一動(dòng),步驟如下。

1、修改kindeditor.js? ?以下代碼參考:http://blog.csdn.net/jimmy0021/article/details/73251406

K(doc.body).bind('paste', function (e) {

if (self.pasteType === 0) {

e.stop();

return;

}

在第一行和第二行之間插入

//處理IE11,Chrome粘貼圖片上傳

function dopasteImg() {

//debugger;

var file = null;

if (window.clipboardData) {//ie

if (clipboardData.files && clipboardData.files.length)//IE11

file = clipboardData.files[0];

else if (!clipboardData.getData("text") && !clipboardData.getData("url")) {

alert("不能粘貼文件或圖片,請(qǐng)使用IE11或者Chrome瀏覽器,或使用上傳功能");

return true;

}

} else {

if (e.event.clipboardData.items)//chrome

for (var i = 0; i < e.event.clipboardData.items.length; i++) {

if (e.event.clipboardData.items[i].kind === "file") {

file = e.event.clipboardData.items[i];

break;

}

}

if (file == null) {

if (!e.event.clipboardData.getData("url") && !e.event.clipboardData.getData("text")) {

alert("不能粘貼文件或圖片,請(qǐng)使用IE11或者Chrome瀏覽器,或使用上傳功能");

return true;

}

}

}

if (file) {

if (!K.undef(self.allowImageUpload, true)) {

alert("編輯器禁止上傳圖片,請(qǐng)與有關(guān)人員聯(lián)系!");

return true;

}

//獲取File Blob

//debugger;

var blb;

if (file.getAsFile) {//Chrome

blb = file.getAsFile();

if (blb.size === 0) {

alert("不能獲取剪切板中的" + (file.type.indexOf("image/") === 0 ? "圖像" : "文件")

+"\n如果是從OutLook中復(fù)制的,請(qǐng)換其他程序,如Word");

return true;

}

sendfile(blb, file.type);

} else {

var fr = new FileReader();

if (fr.readAsArrayBuffer) {//ie

fr.onloadend = function (evt) {

blb = evt.target.result;

sendfile(blb, file.type);

}

fr.readAsArrayBuffer(file);

}

}

function sendfile(b, t) {

var xhr = new XMLHttpRequest();

var formData = new FormData();

var isImg = t.indexOf("image/") === 0;

//formData.append('imgFile', file,"untitled." + t.split('/')[1]);

//formData.append('imgFile', b);

var myBlob = new Blob([b], { "type": t });

formData.append('imgFile', myBlob, "untitled." + t.split('/')[1]);

//formData.append('imgFile', b);

formData.append('dir', isImg ? 'image' : 'file');

xhr.open('POST', self.uploadJson);

xhr.onreadystatechange = function () {

if (xhr.readyState == 4&&xhr.status == 200) {

// if (fn) {

var data = _trim(xhr.responseText);

//if (dataType == 'json') {

data = _json(data);

if (data.error) {

if (typeof ($) !== "undefined" && $.messager && $.messager.alert) {

$.messager.alert('Error', data.message, 'warning');

} else {

alert(data.message);

}

} else {

//self.exec('insertimage', url, title, width, height, border, align);

if(K.undef(self.formatUploadUrl, true))

data.url =K.formatUrl(data.url, 'absolute');

self.exec('insertimage', data.url, "from clipboard", undefined, undefined, undefined, undefined);

}

//}

// fn(data);

// }

}

}

xhr.send(formData);

}

return true;

}

}

//debugger;

if (dopasteImg())? {

e.stop();

}

//處理粘貼結(jié)束5825

搞好了之后,可以用壓縮工具壓縮一下,工具百度一個(gè)就行,或者和我一樣,懶的,不壓縮直接把kindeditor.js 復(fù)制一個(gè)改名kindeditor-min.js替換就行了

完成之后ctrl+f5強(qiáng)刷一下,就能用了。

補(bǔ)一句,kindeditor的視頻上傳只支持swf格式,坑啊?。。。?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個(gè)人博客:https://yeaseonzhang.github.io 花了半個(gè)多月的時(shí)間,終于又把“JS紅寶書”...
    Yeaseon閱讀 1,859評(píng)論 2 23
  • Ajax和XMLHttpRequest 我們通常將Ajax等同于XMLHttpRequest,但細(xì)究起來(lái)它們兩個(gè)是...
    changxiaonan閱讀 2,398評(píng)論 0 2
  • 《ijs》速成開(kāi)發(fā)手冊(cè)3.0 官方用戶交流:iApp開(kāi)發(fā)交流(1) 239547050iApp開(kāi)發(fā)交流(2) 10...
    葉染柒丶閱讀 5,664評(píng)論 0 7
  • H5 meta詳解 viewport width:控制 viewport 的大小,可以指定的一個(gè)值,如果 600,...
    FConfidence閱讀 903評(píng)論 0 3
  • 一、老版本的XMLHttpRequest對(duì)象及用法 首先,新建一個(gè)XMLHttpRequest的實(shí)例。var xh...
    飛魚_JS閱讀 635評(píng)論 0 0

友情鏈接更多精彩內(nèi)容