Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CKEditor 4.7:是否可以仅在WYSIWYG模式下将css类应用于特定元素? 在编辑时,是否可以使用CKEditor的另一个功能仅为所见即所得模式添加css类(而不是为生成的内容)?(就像拼写检查器/scayt一样,它只在所见即所得模式下添加带有波浪下划线样式的跨距) 我的通缉案_Ckeditor_Wysiwyg_Ckeditor4.x - Fatal编程技术网

CKEditor 4.7:是否可以仅在WYSIWYG模式下将css类应用于特定元素? 在编辑时,是否可以使用CKEditor的另一个功能仅为所见即所得模式添加css类(而不是为生成的内容)?(就像拼写检查器/scayt一样,它只在所见即所得模式下添加带有波浪下划线样式的跨距) 我的通缉案

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类添加到的最终内容中 以下是我在发布问题时的代码: /** *检查空标签插件 */ "严格使

我已经为CKEditor 4.7创建了一个插件,用于搜索具有特定内容的特定标签(例如,一个空段落,可能导致最终网站上出现非预期的“空格”),并为标签添加css类。该类添加了一个红色边框,以通知编辑器“empty”标记。 实际上我使用的是
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;
            }

        }
    }
});