CKEditor- acf内容过滤器/允许的内容无法按预期工作

时间:2014-08-12 23:09:13

标签: javascript validation ckeditor

这是一个两个问题:

Q1)我有以下代码:

http://jsfiddle.net/anik786/L8kb4nes/1/

这是HTML:

<form action="javascript:void(0)">
    <textarea id="editor1" name="editor1" cols="80" rows="10">
        Example Text
    </textarea>
    <button id="btnOutput">Get Data</button>
</form>
<div id="output"></div>

和JS:

 var editor = CKEDITOR.replace('editor1', {
        allowedContent:
        'h1 h2 h3 p blockquote strong em;' +
        'a[!href];' +
        'img(left,centre, right)[!src,alt,width,height];' +
        'figure figcaption;' +
        'table tr th td caption;' +
        'span{!font-family};' +
        'span{!color};' +
        'span(!marker);' +
        'span(!math-tex);' +
        'del ins'
    });

$("#btnOutput").on("click", function(){
    $('#output').text(editor.getData());
});

如果我进入源模式并输入无效的内容,例如:&lt; h4&gt; Hi&lt; / h4&gt;然后返回WYSIWIG然后单击“获取数据”按钮,然后h4标签变为输出中的p标签。返回源模式时也会对此进行验证。这与预期的一样,因为h4不在允许的内容中。

但是,如果我进入源模式并写入&lt; h4&gt; Hi&lt; / h4&gt;然后直接点击“获取数据”按钮(即不切换回所见即所得),h4标签出现在输出上。

我该如何解决这个问题?

Q2)内容过滤器似乎不适用于脚本标记。喜欢

<script src="bad.js></script>

当来回切换wyswig时,此标签不会消失。为什么呢?

1 个答案:

答案 0 :(得分:0)

我刚刚找到了实现这一目标的“好方法”。

我将输出按钮代码更改为:

CKEDITOR.instances.editor1.setMode( 'wysiwyg', function() {
            $('#output').text(editor.getData());
        } ); 

这实际上迫使编辑器更改为wyswig模式,然后获取数据。但是我想避免这种情况,因为如果他们的编辑只是自动更改模式,这可能会激怒用户!