Javascript 是否可以修改此选项以删除所有<;img>;在添加新标签之前添加标签
我已经在下面包含了我的javascript的一部分,我想知道的是,一旦成功,它会向编辑器添加一个图像。但是,如何使它在添加新图像之前先从编辑器中删除所有图像Javascript 是否可以修改此选项以删除所有<;img>;在添加新标签之前添加标签,javascript,html,ckeditor,Javascript,Html,Ckeditor,我已经在下面包含了我的javascript的一部分,我想知道的是,一旦成功,它会向编辑器添加一个图像。但是,如何使它在添加新图像之前先从编辑器中删除所有图像 onComplete: function (file, json) { $('#upload-image').attr('disabled', false); $('.error-upload').remove(); if (json['success']) { alert(json['success']); v
onComplete: function (file, json) {
$('#upload-image').attr('disabled', false);
$('.error-upload').remove();
if (json['success']) {
alert(json['success']);
var oEditor = CKEDITOR.instances.forum_signature;
var value = document.getElementById('forum_signature').value;
if (oEditor.mode == 'wysiwyg') {
oEditor.insertHtml('<img src="' + json['image'] + '" alt="Image" /><p> </p>');
} else {
alert('You must be in WYSIWYG mode!');
}
}
if (json['error']) {
$('#upload').after('<span class="error-upload" style="color:red;">' + json['error'] + '</span>');
}
if (json['error_size']) {
$('#upload').after('<span class="error-upload" style="color:red;">' + json['error_size'] + '</span>');
}
$('.loading').remove();
}
onComplete:function(文件,json){
$(“#上传图像”).attr('disabled',false);
$('.error upload').remove();
if(json['success']){
警报(json['success']);
var oEditor=CKEDITOR.instances.forum_签名;
var值=document.getElementById('forum_signature')。值;
if(oEditor.mode=='wysiwyg'){
oEditor.insertHtml(“”);
}否则{
警报(“您必须处于所见即所得模式!”);
}
}
if(json['error']){
$('#upload')。在(''+json['error']+'')之后;
}
if(json['error_size']){
$('#upload')。在(''+json['error_size']+'')之后;
}
$('.loading').remove();
}
我成功地解决了一些问题。BasicCall我在CKEditor中使用了两种方法
getData();
setData()
首先,我从实例中获取数据。我将其附加到临时创建的dom元素。在那之后,我能够操纵内容。
在完成这些操作之后,我获取临时dom元素的html内容,并使用setData()将其放置在CKEditor中。这可能有点骇人,我不确定这是否真的是正确的方法,但它确实有效
编辑器的实例:
var forum_signature = CKEDITOR.replace('textAreaName');
var oEditor = CKEDITOR.instances.forum_signature
var jsonImage = 'images/img2.jpg';
var temp = $("<div/>", {
id: "temp"
});
var data = oEditor.getData();
$(data).appendTo(temp);
// you now can traverse the "temp" element in the dom
$(temp).find("img").eq(0).remove();
// You can add html
$(temp).append('<img src=' + jsonImage + ' alt="Image" /><p>Hello World</p>');
var newData = $(temp).html();
$(temp).remove();
oEditor.setData(newData);
var forum_signature=CKEDITOR.replace('textAreaName');
var oEditor=CKEDITOR.instances.forum\u签名
var jsonImage='images/img2.jpg';
变量温度=$(“”{
id:“临时工”
});
var data=oEditor.getData();
$(数据)。附加到(临时);
//现在可以遍历dom中的“temp”元素
$(temp.find(“img”).eq(0.remove();
//您可以添加html
$(temp).append(“helloworld”);
var newData=$(temp.html();
$(temp.remove();
oEdit.setData(新数据);
我成功地解决了一些问题。BasicCall我在CKEditor中使用了两种方法
getData();
setData()
首先,我从实例中获取数据。我将其附加到临时创建的dom元素。在那之后,我能够操纵内容。
在完成这些操作之后,我获取临时dom元素的html内容,并使用setData()将其放置在CKEditor中。这可能有点骇人,我不确定这是否真的是正确的方法,但它确实有效
编辑器的实例:
var forum_signature = CKEDITOR.replace('textAreaName');
var oEditor = CKEDITOR.instances.forum_signature
var jsonImage = 'images/img2.jpg';
var temp = $("<div/>", {
id: "temp"
});
var data = oEditor.getData();
$(data).appendTo(temp);
// you now can traverse the "temp" element in the dom
$(temp).find("img").eq(0).remove();
// You can add html
$(temp).append('<img src=' + jsonImage + ' alt="Image" /><p>Hello World</p>');
var newData = $(temp).html();
$(temp).remove();
oEditor.setData(newData);
var forum_signature=CKEDITOR.replace('textAreaName');
var oEditor=CKEDITOR.instances.forum\u签名
var jsonImage='images/img2.jpg';
变量温度=$(“”{
id:“临时工”
});
var data=oEditor.getData();
$(数据)。附加到(临时);
//现在可以遍历dom中的“temp”元素
$(temp.find(“img”).eq(0.remove();
//您可以添加html
$(temp).append(“helloworld”);
var newData=$(temp.html();
$(temp.remove();
oEdit.setData(新数据);
您可以执行以下操作:
$(oEditor).children("img").remove();
您可以这样做:
$(oEditor).children("img").remove();
以下几点应该行得通。它会在oEditor元素中查找所有
img
元素,并将它们从其父元素中删除
if ( oEditor.mode == 'wysiwyg' )
{
// Create an array of img elements.
imgs = oEditor.getElementsByTagName("img");
// Remove each img from its parent node.
for (var i=0; i<imgs.length; i++) {
imgs[i].parentNode.removeChild(imgs[i]);
}
oEditor.insertHtml( '<img src="'+ json['image'] +'" alt="Image" /><p> </p>' );
}
else{
alert( 'You must be in WYSIWYG mode!' );
}
if(oEditor.mode=='wysiwyg')
{
//创建一个img元素数组。
imgs=oEditor.getElementsByTagName(“img”);
//从其父节点删除每个img。
对于(VarI=0;i');
}
否则{
警报('您必须处于所见即所得模式!');
}
以下各项应能起作用。它会在oEditor元素中查找所有img
元素,并将它们从其父元素中删除
if ( oEditor.mode == 'wysiwyg' )
{
// Create an array of img elements.
imgs = oEditor.getElementsByTagName("img");
// Remove each img from its parent node.
for (var i=0; i<imgs.length; i++) {
imgs[i].parentNode.removeChild(imgs[i]);
}
oEditor.insertHtml( '<img src="'+ json['image'] +'" alt="Image" /><p> </p>' );
}
else{
alert( 'You must be in WYSIWYG mode!' );
}
if(oEditor.mode=='wysiwyg')
{
//创建一个img元素数组。
imgs=oEditor.getElementsByTagName(“img”);
//从其父节点删除每个img。
对于(VarI=0;i');
}
否则{
警报('您必须处于所见即所得模式!');
}
oEdit
是CKEDITOR.editor
类的一个实例。因此,这是正确的解决方案:
if ( oEditor.mode == 'wysiwyg' && oEditor.editable() ) {
var images = oEditor.editable().getElementsByTag( 'img' );
while ( images.count() ) {
var image = images.getItem( 0 ); // This is a live collection.
// Whether this is a real image, not e.g. anchor icon.
if ( image.data( 'cke-saved-src' ) )
image.remove();
}
}
oEditor
是CKEDITOR.editor
类的一个实例。因此,这是正确的解决方案:
if ( oEditor.mode == 'wysiwyg' && oEditor.editable() ) {
var images = oEditor.editable().getElementsByTag( 'img' );
while ( images.count() ) {
var image = images.getItem( 0 ); // This is a live collection.
// Whether this is a real image, not e.g. anchor icon.
if ( image.data( 'cke-saved-src' ) )
image.remove();
}
}
正如我在上面尝试的那样,我应该把它放在哪里如果我错了,那么所有的图像都会对我不正确,但是我非常确定oEdit不是DOM节点。这似乎是某个特定于CKEditor的对象。Ya@HannesJohansson是对的,在这种情况下,我下面的非jQuery解决方案也不会起作用。您需要标识实际包含图像的DOM对象。我应该将其放在哪里,就像我在上面尝试的那样
oEdit.insertHtml('')如果我错了,那么所有的图像都会对我不正确,但是我非常确定oEdit不是DOM节点。这似乎是某个特定于CKEditor的对象。Ya@HannesJohansson是对的,在这种情况下,我下面的非jQuery解决方案也不会起作用。您需要标识实际包含图像的DOM对象。我应该将其放在哪里,就像我在上面尝试的那样oEdit.insertHtml('')代码>和所有图像remain@Ghodmode-当检查问题中的代码时,我有理由相信他正在使用jQuery。至于第二个论点,你有理论支持吗?我很抱歉。我误解了你的解决办法。我以为您建议将src
属性设置为空字符串或不存在的URI,以使其不可见。不,只需替换它即可。既然标签已经在那里了,他想注入一个新的,移除它没有任何意义。。干杯;)@贾斯汀-对不起。CKEditor似乎确实需要定义的方法。在我看到的文档中,您可能必须使用CKEditor中的setData()方法:我在上面尝试的时候,将其放在哪里代码>和所有图像remain@Ghodmode-当检查问题中的代码时,我有理由相信他正在使用jQuery。至于第二个论点,你有理论支持吗?我很抱歉。我误解了你的解决办法。我以为你在建议设置