BR不在Ckeditor工作

时间:2013-07-03 15:11:16

标签: javascript ckeditor

有谁知道为什么BR不在Ckeditor中工作?我想知道为什么这个br代码无法在dataProcessor中使用。我一直在Ckeditor论坛上搜索posted,但没有人回复。

实际上,只有在您使用EnterShift + 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有效,但我认为这不是解决此问题的最佳方法。必须有一些方法来做到这一点。

0 个答案:

没有答案