CKEditor 在所有 <p> 中插入 <q>

CKEditor inserting <q> in all <p>

我正在 <textarea> 中应用一个 CKEditor,内容如下:

<q>
<p>this is paragraph one.</p>
<p>this is paragraph two.</p>
</q>

所以,我想引用所有这些段落。但是,当我应用 CKEditor 时,上面的 HTML 转换为 HTML:

<q>
<p><q>this is paragraph one.</q></p>
<p><q>this is paragraph two.</q></p>
</q>

这是我创建 CKEditor 实例的函数:

function create_ckeditor_instance(comment) {
    comment = '<q>' + comment.trim() + '</q>';

    var html = '<textarea rows="5" cols="80" id="reply-textarea">';
    html += comment;
    html += "</textarea>";

    $('reply-comment-wrapper').html(html);

    CKEDITOR.replace('reply-textarea');

    CKEDITOR.instances['reply-textarea'].on('instanceReady', function (event) {
      var range = CKEDITOR.instances['reply-textarea'].createRange();
      range.moveToPosition( range.root, CKEDITOR.POSITION_BEFORE_END );
      CKEDITOR.instances['reply-textarea'].getSelection().selectRanges( [ range ] );
      CKEDITOR.instances['reply-textarea'].focus();
    });

}

我的问题是,如何避免 CKEditor 的这种行为?

<q> is Phrasing Content, but the <p> element is Flow Content 的内容模型并且从那时起不是 <q> 的有效子项。

您需要使用 <blockquote>

外部 <q></q> 对我来说看起来像一个错误,但我不能在这里重现它,使用 CKEditor 的当前版本。

但它被转换为:

<p><q>this is paragraph one.</q></p>
<p><q>this is paragraph two.</q></p>

是正确的,因为将 <q> 包裹在这两个 <p> 周围会产生无效代码。