CKEditor V4带有bb插件和视频插件,无法更改值



我正试图用ckeditor V4与bb插件(已更改(和这个视频插件(已修改(相结合来构建一个评论系统。

现在,我可以向系统提交评论,但当我试图编辑帖子时,它会被卡住。用户需要点击帖子,这样帖子就会在CKEditor中发生变化,ajax请求会要求获得原始HTML并将其传递到编辑器中。

当我删除视频插件时,它可以工作,但我不明白为什么它不能与插件一起工作。有人能告诉我我做错了什么吗?

我不知道插件是如何与编辑器交互的,你需要/处理代码的哪一部分?(我不想发布完整的代码,因为许多表单讨厌这个操作(

感谢您花时间阅读。

查看视频插件代码,我们可以看到它确实简单地通过iframe L49将视频嵌入到videodetector master/dialogs/videoDialog.js:中

var iframe = new CKEDITOR.dom.element('iframe');
iframe.setAttribute('src', url);
iframe.setAttribute('frameborder', '0');
p.append(iframe);

这个问题来自bbcode插件,因为它不支持视频插件创建的iframe标签,所以它在试图将视频iframe转换为bbcode标签时崩溃。

通过检查插件代码,我们可以看到添加对iframe标签的支持很简单:

插件文件:bbcode/Plugin.js在L29:中添加iframe标签

var bbcodeMap = { iframe: 'span', b: 'strong', u: 'u', /* rest of tags here */}

在L164:中添加特殊处理检查(与img标签相同(

if ( part == 'email' || part == 'img' || part == 'iframe' )

在L618:中添加预览所需的更改(从bbcode到html(

} else if ( bbcode == 'iframe' ) {
element.name = 'iframe';
element.attributes.src = element.children[ 0 ].value;
element.children = [];
}

添加L730:中输出所需的更改(从html到bbcode(

} else if ( tagName == 'iframe' ) {
element.isEmpty = 0;
var src = attributes.src;
element.children = [ new CKEDITOR.htmlParser.text( src ) ];
}

这是一把示范小提琴:https://jsfiddle.net/s17mjwdz/

相关内容

最新更新