CKEDITOR-删除筛选器中的标记

CKEDITOR-删除筛选器中的标记,ckeditor,Ckeditor,对于此示例标记: <p>Hello <span class='blah'>John</span>, how are you?</p> 以下是我的示例代码,用于调用: var filter = new CKEDITOR.htmlParser.filter(rules); var fragment = CKEDITOR.htmlParser.fragment.fromHtml(text); var writer = new C

对于此示例标记:

<p>Hello <span class='blah'>John</span>, how are you?</p>
以下是我的示例代码,用于调用:

    var filter = new CKEDITOR.htmlParser.filter(rules);
    var fragment = CKEDITOR.htmlParser.fragment.fromHtml(text);
    var writer = new CKEDITOR.htmlParser.basicWriter();
    filter.applyTo(fragment);
    fragment.writeHtml(writer);
    var results = writer.getHtml();
    console.log(results);

这里有一个

要使其工作,您需要返回
CKEDITOR.htmlParser.text的实例,而不是返回字符串。但有一个更简单的方法:

var rules = {
    elements: {
        span: function(element) {
            if (element.hasClass("blah")) {
                delete element.name;
            }
        }
    }
};

瞧!
标记被剥离,但其内容被保留。

显然,诀窍是将name和class属性都设置为空字符串。这是你的电话号码。以下是过滤器:

var filter = new CKEDITOR.htmlParser.filter({
    elements: {
        span: function(element) {
            if (element.hasClass("blah")) {
                element.name = "";
                element.attributes.class = "";
                return element;
            }
        }
    }
});

您的代码可以工作,尽管它包含两行不必要的行:)。看看我的答案。
var filter = new CKEDITOR.htmlParser.filter({
    elements: {
        span: function(element) {
            if (element.hasClass("blah")) {
                element.name = "";
                element.attributes.class = "";
                return element;
            }
        }
    }
});