有谁知道为什么BR不在Ckeditor中工作?我想知道为什么这个br
代码无法在dataProcessor
中使用。我一直在Ckeditor论坛上搜索posted,但没有人回复。
实际上,只有在您使用Enter
或Shift + Enter
时才会插入BR。
这是我的plugin.js:
// Run these after attaching ang detaching the ckeditor.
afterInit: function (editor) {
var dataProcessor = editor.dataProcessor,
// Ckeditor in this state is enabled.
dataFilter = dataProcessor && dataProcessor.dataFilter,
// Ckeditor in this state is disabled.
htmlFilter = dataProcessor && dataProcessor.htmlFilter;
if ( htmlFilter ) {
htmlFilter.addRules({
// Loop through all elements
elements: {
// Perform this when it found image tag.
img : function( element) {
if (element.attributes.class == 'wysiwyg-addbr') {
return new CKEDITOR.htmlParser.element( 'br', {'class': 'clear-both'});
}
}
}
});
}
}
似乎CKEDITOR.htmlParser.element()因为未知原因而不接受br
元素。
return new CKEDITOR.htmlParser.element( 'br', {'class': 'clear-both'});
上面的代码会产生错误(见下文)。
Uncaught TypeError: Cannot read property 'type' of undefined
但是如果尝试下面的代码它可以工作,但元素是大写的。
return new CKEDITOR.htmlParser.element( 'BR', {'class': 'clear-both'});
我在ckeditor.js中找到了这段代码,看起来这段代码就是br
被压制的原因。
o.elements.br = function ( a ) {
return function ( b ) {
if (b.parent.type != Uncaught TypeError: Cannot read property 'type' of undefined CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
var c = b.attributes;
if ("data-cke-bogus" in c || "data-cke-eol" in c) delete c["data-cke-bogus"];
else {
for ( c = b.next; c && e( c ); ) c = c.next;
var h = f( b );
!c && d( b.parent ) ? l(b.parent, g( a )) : d( c ) && (h && !d( h )) && j(c, g( a ))
}
}
}
}(p);
如果我删除了该代码br
有效,但我认为这不是解决此问题的最佳方法。必须有一些方法来做到这一点。