Javascript .appendchild在CKeditor中执行两次
我正在为CKeditor使用simpleuploads插件。除了一个小问题,一切都很好 我正在尝试像这样将上传的图像对象包装到div中Javascript .appendchild在CKeditor中执行两次,javascript,ruby-on-rails,ckeditor,Javascript,Ruby On Rails,Ckeditor,我正在为CKeditor使用simpleuploads插件。除了一个小问题,一切都很好 我正在尝试像这样将上传的图像对象包装到div中 <div class="image-container> <img class="addedImg> </div> 问题是div被包装在另一个div中,如下所示: <div class="image-container"> <div class="image-container">
<div class="image-container>
<img class="addedImg>
</div>
问题是div被包装在另一个div中,如下所示:
<div class="image-container">
<div class="image-container">
<img class="addedImg">
</div>
</div>
如何使脚本只执行一次
编辑:
由于加载了我的自定义资产/javascripts/ckeditor/config.js,然后再次加载galetahub gem的资产/ckeditor/config.js而导致的问题。不知道问题出在哪里。如果找到解决方案,将发布更多详细信息。代码很好,但该文件包含两次,因此侦听器将执行两次。通过在第一次执行finishedUpload事件后停止finishedUpload事件,可以避免此问题:
CKEDITOR.on('instanceReady', function(e) {
e.editor.on( 'simpleuploads.finishedUpload' , function(ev)
{
var element = ev.data.element;
if (element.getName() == 'img')
{
var img = element.$,
doc = img.ownerDocument,
div = doc.createElement('div');
img.setAttribute('class', 'addedImg');
img.removeAttribute('width');
img.removeAttribute('height');
div.setAttribute('class', 'image-container');
img.parentNode.replaceChild(div, img);
div.appendChild(img);
ev.stop(); // Stop the event in case the listener is inserted twice
}
});
});
我已经测试了你的代码,对我来说效果很好。我认为您可能正在加载/app/assets/javascripts/ckeditor/config.js两次,这就是为什么代码会执行两次。你能试试吗?嗨,阿方索!很棒的插件。价值10欧元。我已经检查了我的源代码,config.js只包含一次。有没有一种方法可以测试它是否加载了两次?您不应该包含config.js文件,因为它是由CKEditor自动完成的。您可以通过在“var element=ev.data.element;”处设置断点进行测试线路。如果无法避免两次加载文件,则可以通过添加“ev.stop();”来停止finishedUpload事件孩子死后call@AlfonsoML你说得对!它被呼叫了两次。ev.stop();解决了这个问题。我正在使用galetahub gem来制作rails,所以仍在试图找出原因。如果你加上答案,我就接受。
CKEDITOR.on('instanceReady', function(e) {
e.editor.on( 'simpleuploads.finishedUpload' , function(ev)
{
var element = ev.data.element;
if (element.getName() == 'img')
{
var img = element.$,
doc = img.ownerDocument,
div = doc.createElement('div');
img.setAttribute('class', 'addedImg');
img.removeAttribute('width');
img.removeAttribute('height');
div.setAttribute('class', 'image-container');
img.parentNode.replaceChild(div, img);
div.appendChild(img);
ev.stop(); // Stop the event in case the listener is inserted twice
}
});
});