阻止CKEDITOR将Previous Element类复制到页面上的每个新元素中
Stop CKEDITOR from Copying the Previous Element class into each new element on page
默认情况下,当您按下回车键时,光标所在的元素将被复制为具有所有相同属性的元素。如果你在CKEDITOR配置文件中设置了"forceEnterMode: true",你可以强制CKEDITOR不复制元素,而是在每次按enter键时使用默认元素(http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.forceEnterMode),但不幸的是,类仍然被复制到这个新元素中。
换句话说,如果ckeditor中的代码是:
<div class="text">{{cursor here}}</div>
然后按两次回车键。你会得到:
<div class="text"></div>
<div class="text">{{cursor here}}</div>
如果你设置forceEnterMode: true,然后按回车键,你会得到:
<div class="text"></div>
<div class="text"></div>
<p class="text">{{cursor here}}</p>
我不确定在什么情况下你会希望你以前的元素类被复制到每一个未来的元素,因为你间隔的页面,但我绝对不希望这个功能。我希望结果是这样的:
<div class="text"></div>
<p></p>
我怎么能强迫CKEDITOR停止复制以前的元素属性到页面的每个新元素,每次我按回车键?
这是jsfiddle: http://jsfiddle.net/B4yGJ/158/
简短的回答是不能强制CKEDITOR停止复制先前的元素属性。
如果你仔细阅读github上的enterkey插件代码,你会看到前面的节点被克隆了所有属性,内联样式和类(只有id被删除),然后插入到它的父节点或下面。blockquote、li和pre标签例外。
这完全有意义,因为通常我们希望在创建新段落时继续使用选择的样式输入(就像在任何其他编辑器中一样)。
如果这种行为仍然很烦人,你可以手动使用magicline插件,强制块之间换行或从选定的块中删除文本格式。
监听编辑器上的'enter'事件,然后获取元素并执行必要的操作——下面的代码从按enter键时创建的新div中删除了data-element属性。这个答案有点晚了,但它仍然可以帮助别人:)
editor.on('afterCommandExec', function (e) {
if (e.data.name == 'enter') {
var el = e.editor.getSelection().getStartElement();
// modify el according to your needs
el.removeAttribute('data-element', '')
}
});
- 为什么可以't我访问Angular创建的新DOM元素
- 如何在数据数组的每次迭代中创建一个内容为“i+1”的新 HTML 元素
- 通过 jQuery 添加新记录元素
- 在 jquery 可排序后定义
- 元素
- 元素的索引
- 元素
- 单击新 DOM 元素不起作用的事件
- 固定添加新消息(元素)后的位置视图内容
- jQuery 委托加载新创建元素的事件处理程序
- React不是更新元素,而是用相同的reactid创建新的元素
- "$(文件);在事件stopPropagation之后不触发$(a) 在“;而不触发新的元素
- 新html元素的旧javascript函数
- 无法获取新创建元素的高度
- DOM中的新SVG元素,通过JavaScript添加,直到鼠标up才呈现
- 从页面加载时的新输入元素获取值
- AngularJS函数不知道$compile后的新dom元素
- 为什么我可以't为我的新select元素创建ID吗
- 通过JavaScript/jQuery将页面保存为包含新添加元素的HTML文件
- 如何在添加新的元素集之前删除以前创建的元素
- 为什么Capybara不匹配AJAX调用后插入的新DOM元素
- 新创建元素上的Javascript onclick事件
- 在不添加新标签/元素的情况下向属性添加描述(用于屏幕阅读器)