如何防止CKEditor insertHtml在webkit浏览器中将元素包装在<p>中?</p>

时间:2011-02-03 15:20:04

标签: webkit ckeditor smarty wysiwyg

我正在尝试构建一个前端页面,以允许我的用户使用smarty wysiwyg编辑器构建ckeditor模板。

我使用insertHtml函数添加一个具有特殊属性的按钮(需要将其解析为后端的smarty变量):

// initialize ckeditor
$('textarea.editor').ckeditor({
    contentsCss: '/css/test.css'
});
// get ckeditor instance
ckeditorInstance = $('textarea.editor').ckeditorGet();
// Use some elements (outside the textarea) to add buttons/tokens
// to wysiwyg textarea
$("a.tinymce.tinymce-insert-var").click(function(){
    ckeditorInstance.insertHtml(
        '<input type="button" readonly="readonly" var="{$user-&gt;name}" '
        + 'class="placeholder" value="User Name" />'
    );
});

这适用于Firefox,IE8和Opera,但使用Chrome / Chromium / Safari时,按钮会插入<p>元素之间。

有没有办法避免这种情况,或者我可以用来删除段落的回调?

3 个答案:

答案 0 :(得分:2)

我也有这个问题。我就这样做了......

var editor = $('textarea[name=content]').ckeditorGet();
var element = CKEDITOR.dom.element.createFromHtml( '<p>I am a new paragraph</p>' );
editor.insertElement( element );

答案 1 :(得分:0)

看起来你也在使用jQuery ...为什么不强制在CKEditor的.insertHtml函数中包含p标签,然后用jQuery的.unwrap跟进它以始终删除p标签?

答案 2 :(得分:0)

在主ckeditor配置文件中有一个选项可以禁用自动&lt; p&gt;插入。 尝试将CKConfig.EnterMode和CKConfig.ShiftEnterMode的值更改为'br'。

菲利克斯