CKEditor防止块元素?喜欢(`div,p,h1,h2等等)

时间:2015-07-29 12:32:50

标签: ckeditor

如何防止ckeditor中的块元素?

我想不要让ckeditor接受块元素。 有了阻止输入密钥,我可以这样做,但如果我粘贴一些文本,包括输入密钥或ckeditor中的几个段落。

换句话说,我想要一个带有ckeditor的文本框。

1 个答案:

答案 0 :(得分:2)

引用official weekly blog post

  

CKEditor核心开发人员Olek Nowodziński在业余时间对编辑进行了一些攻击,结果就是......   不会因Enter键或粘贴的多行内容而中断的可修改标头:https://jsfiddle.net/540ckczt/

select m.feed_id,e.event_code,m.meeting_name,e.timestamp_updated,e.event_time,m.country_code,m.category
from event e, meeting m 
WHERE m.id = e.meeting_id
AND m.date = '2015-07-29'
AND m.feed_id IN (1,2)
AND m.status ='A'  
AND e.off_time IS NOT NULL
AND e.settle_status = 'R'  
AND e.settle_status != 'V'  
ORDER BY
 CASE WHEN  m.country_code = 'AU' THEN  e.timestamp_updated               
 CASE WHEN  m.country_code <> 'AU' THEN  e.event_code  
END DESC             

注意,此代码的关键部分是ACF过滤掉其余的块标记(var editor = CKEDITOR.inline( 'editor', { plugins: 'clipboard,floatingspace,toolbar,undo,basicstyles,link', toolbar: [ [ 'Undo', 'Redo' ], [ 'Bold', 'Italic' ], [ 'Link', 'Unlink' ] ], // Enter mode ill be set to BR automatically if editor was enabled on some element // which cannot contain blocks (like <h1 for instance). // If you want to enable editor on different elements, set BR mode here. // Read the note below to learn why. enterMode: CKEDITOR.ENTER_BR, on: { instanceReady: function() { // Remove all "br"s from the data being inputted into the editor. editor.dataProcessor.dataFilter.addRules( { elements: { br: function() { return false; } } } ); this.editable().on( 'keydown', function( evt ) { var keystroke = evt.data.getKeystroke(); if ( keystroke == CKEDITOR.SHIFT + 13 || keystroke == 13 ) { evt.data.preventDefault(); } } ); } } } ); 除外)。在上述情况下,ACF在自动模式下工作,由启用的功能配置。由于没有格式下拉列表或任何其他功能创建块,因此不允许使用它们。请阅读Advanced Content Filter指南中的更多内容。

我希望现在可以问:&#34;为什么我们不能配置ACF来过滤掉<br>?&#34;

答案是ACF必须能够规范化不允许某些内容的块,并且因为CKEditor不支持&#34; no enter&#34;正式模式,它在规范化为<br><p><div>之间选择。决定是基于输入模式做出的,因此将此类编辑器配置为进入模式BR非常重要。