Tinymce 上载失败后从内容中删除图像

Tinymce 上载失败后从内容中删除图像,tinymce,tinymce-4,Tinymce,Tinymce 4,使用TinyMCE 4和带有自定义图像上载处理程序(基于)的粘贴插件,我的上载工作正常。但是,当上传失败时,图像仍会添加到内容中。该示例指示为错误调用failure方法,但这不会删除映像 我尝试添加一个粘贴后处理回调来过滤内容,但在这一点上,成功上传的图像和失败的图像之间的内容没有区别。它们都出现在内容中,如: <div style="display:none"><img src="data:image/jpeg;base64, datahere" /></div&

使用TinyMCE 4和带有自定义图像上载处理程序(基于)的粘贴插件,我的上载工作正常。但是,当上传失败时,图像仍会添加到内容中。该示例指示为错误调用failure方法,但这不会删除映像

我尝试添加一个粘贴后处理回调来过滤内容,但在这一点上,成功上传的图像和失败的图像之间的内容没有区别。它们都出现在内容中,如:

<div style="display:none"><img src="data:image/jpeg;base64, datahere" /></div>

内容的最终结果实际上是不同的。成功上载的图像源如下:

<img src="http://website/uploads/mceclip11.jpg" />

而失败的上载看起来像:

<img src="blob:http://website/dd3bdcda-b7b1-40fe-9aeb-4214a86a92a9">

为了尝试这一点,我创建了一个


关于如何在向用户显示失败的上传图像之前将其从内容中删除,您有什么想法吗?

对于任何可能尝试类似操作的人,我想出了一种解决方法

在调用了示例中所示的failure方法之后,我现在调用一个方法来在失败的图像出现在编辑器中之前删除它

该函数如下所示:

function removeFailedUpload() {
    var editor = tinymce.EditorManager.get('editorId');
    var $html = $('<div />',{html:editor.getContent()});
    $html.find('img[src^="data:"]').remove();
    editor.setContent($html.html());
}
函数removeFailedUpload(){
var editor=tinymce.EditorManager.get('editorId');
var$html=$(“”,{html:editor.getContent()});
$html.find('img[src^=“data:”).remove();
setContent($html.html());
}

我建议使用两种方法来更紧凑地移除光标,同时保持光标位置

方法1:

var editor = tinymce.activeEditor;
editor.selection.collapse();
$(editor.dom.doc).find('img[src^="blob:"]').remove();
var editor = tinymce.activeEditor;
var img = $(editor.dom.doc).find('img[src^="blob:"]').get(0);
if (img)
    editor.execCommand('mceRemoveNode', false, img);
方法2:

var editor = tinymce.activeEditor;
editor.selection.collapse();
$(editor.dom.doc).find('img[src^="blob:"]').remove();
var editor = tinymce.activeEditor;
var img = $(editor.dom.doc).find('img[src^="blob:"]').get(0);
if (img)
    editor.execCommand('mceRemoveNode', false, img);

最简单的解决方案是使用撤消管理器:

tinymce.activeEditor.undoManager.undo();

你不恢复光标的位置吗?