CKEditor 4.7:是否可以仅在WYSIWYG模式下将css类应用于特定元素? 在编辑时,是否可以使用CKEditor的另一个功能仅为所见即所得模式添加css类(而不是为生成的内容)?(就像拼写检查器/scayt一样,它只在所见即所得模式下添加带有波浪下划线样式的跨距) 我的通缉案
我已经为CKEditor 4.7创建了一个插件,用于搜索具有特定内容的特定标签(例如,一个空段落,可能导致最终网站上出现非预期的“空格”),并为标签添加css类。该类添加了一个红色边框,以通知编辑器“empty”标记。 实际上我使用的是CKEditor 4.7:是否可以仅在WYSIWYG模式下将css类应用于特定元素? 在编辑时,是否可以使用CKEditor的另一个功能仅为所见即所得模式添加css类(而不是为生成的内容)?(就像拼写检查器/scayt一样,它只在所见即所得模式下添加带有波浪下划线样式的跨距) 我的通缉案,ckeditor,wysiwyg,ckeditor4.x,Ckeditor,Wysiwyg,Ckeditor4.x,我已经为CKEditor 4.7创建了一个插件,用于搜索具有特定内容的特定标签(例如,一个空段落,可能导致最终网站上出现非预期的“空格”),并为标签添加css类。该类添加了一个红色边框,以通知编辑器“empty”标记。 实际上我使用的是editor.document.$.getElementsByTagName(标记名)和纯javascript添加css类rte empty 我的问题 我的方法还将css类添加到的最终内容中 以下是我在发布问题时的代码: /** *检查空标签插件 */ "严格使
editor.document.$.getElementsByTagName(标记名)
和纯javascript添加css类rte empty
我的问题
我的方法还将css类添加到
的最终内容中
以下是我在发布问题时的代码:
/**
*检查空标签插件
*/
"严格使用",;
(功能(){
CKEDITOR.plugins.add('emptytags'{
朗:“德,恩”,
onLoad:函数(编辑器){
CKEDITOR.addCss(
“.cke_可编辑.rte空{”+
'边框:1px点红色;'+
'}'
);
},
init:函数(编辑器){
//默认配置
var defaultConfig={
标记检查:{0:'p'}
};
var config=CKEDITOR.tools.extend(defaultConfig,editor.config.emptytags |{},true);
editor.addCommand('checkForEmptyTags'{
执行:函数(编辑器){
var editorContent=editor.getData();
//如果编辑器没有内容,停止检查并通知编辑器。
如果(编辑内容==''){
警报(editor.lang.emptytags.AlertEditorContentEmpty)
返回;
}
//检查是否设置了要检查的标记名
如果(config.tagsToCheck.length>0&&config.tagsToCheck[0]!==null){
var指数;
对于(索引=0;索引 })();代码>我会亲自聆听要添加的和事件,然后将CSS类删除到所需的元素中。这样,用户在从CKEditor检索数据或切换到源模式时将看不到该类
以下是更新后的代码(您仍需要根据需要进行定制):
.谢谢!您知道如何同时在按键上运行markEmptyChildren()
?我已经尝试了一些方法,但是我没有在editor.on('key')
中获得evt.data.dataValue
。
CKEDITOR.plugins.add('emptytags', {
lang: "de,en",
onLoad: function(editor) {
CKEDITOR.addCss(
'.cke_editable .rte-empty {' +
' border: 1px dotted red;' +
'}'
);
},
init: function (editor) {
editor.on('toHtml', function (evt) {
markEmptyChildren(evt.data.dataValue);
}, null, null, 14);
editor.on('toDataFormat', function (evt) {
unmarkEmptyChildren(evt.data.dataValue);
},
null, null, 14);
function markEmptyChildren(element) {
var children = element.children;
if (children) {
for (var i = children.length; i--; ) {
var child = children[i];
if (child.name == "p") {
if (isEmpty(child)) {
child.addClass("rte-empty")
} else {
child.removeClass("rte-empty")
}
}
markEmptyChildren(child);
}
}
}
function unmarkEmptyChildren(element) {
var children = element.children;
if (children) {
for (var i = children.length; i--; ) {
var child = children[i];
if (child.name == "p") {
child.removeClass("rte-empty")
}
unmarkEmptyChildren(child);
}
}
}
function isEmpty(node) {
if (node instanceof CKEDITOR.htmlParser.element) {
if (node.name == "br") {
return true;
} else {
var children = node.children;
for (var i = children.length; i--; ) {
var child = children[i];
if (!isEmpty(children[i])) {
return false;
}
}
return true;
}
} else if (node instanceof CKEDITOR.htmlParser.text) {
return node.value.trim().length === 0;
} else {
return true;
}
}
}
});