django admin后台kindeditor(4.1.10)编辑器支持黏贴图片

前言:

说实话django后台的富文本编辑器有很多,都集成了,比如django-ckeditor等等,但是django-ckeditor支持的功能比较少,悲催的是现在django-ckeditor还只有繁体的,用起来不爽,如下图:

django admin后台kindeditor(4.1.10)编辑器支持黏贴图片_第1张图片

所以自己在后台折腾了个kindeditor,但是发现有很多坑,比如不支持图片黏贴,写起文章很不爽,所以记录一下解决方案吧。

下面是我实现的效果:

首先是上网搜到要修改kindeditor.js文件

django admin后台kindeditor(4.1.10)编辑器支持黏贴图片_第2张图片

所以按照要求修改了下,发现并没有卵用,然后又修改kindeditor-all.js文件,发现依然没有卵用

然后去后台前端看源码发现引用的是压缩后的min文件

然后又傻呵呵的修改min文件,发现要修改的太多了,因为都是压缩后的混淆文件,变量名字都不一样,所以抑郁了,折腾了一小会,灵机一动,步骤如下。

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("不能粘贴文件或图片,请使用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("不能粘贴文件或图片,请使用IE11或者Chrome浏览器,或使用上传功能");

return true;

}

}

}

if (file) {

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

alert("编辑器禁止上传图片,请与有关人员联系!");

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中复制的,请换其他程序,如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();

}

//处理粘贴结束5825

搞好了之后,可以用压缩工具压缩一下,工具百度一个就行,或者和我一样,懒的,不压缩直接把kindeditor.js 复制一个改名kindeditor-min.js替换就行了

完成之后ctrl+f5强刷一下,就能用了。

补一句,kindeditor的视频上传只支持swf格式,坑啊!!!!

你可能感兴趣的:(django admin后台kindeditor(4.1.10)编辑器支持黏贴图片)