如何防止CKEditor insertHtml将元素包裹在

内在 webkit 浏览器中?

发布于 2024-10-15 17:48:50 字数 1008 浏览 3 评论 0 原文

我正在尝试构建一个前端页面,以允许我的用户使用 smarty 模板://ckeditor.com/" rel="nofollow">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 中,按钮插入在

元素之间。

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

Im trying to build a front-end page to allow my users to build smarty templates with ckeditor wysiwyg editor.

Im using the insertHtml function to add a button with special attributes (needed to parse it into an smarty variable in the back-end):

// 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->name}" '
        + 'class="placeholder" value="User Name" />'
    );
});

This works fine on Firefox, IE8 and opera, but with Chrome/Chromium/Safari the button is inserted between a <p> element.

Is there a way to avoid this, or a callback that i can use to remove the paragraph?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

俯瞰星空 2024-10-22 17:48:50

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

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

I had this problem as well. This is how I did it...

var editor = $('textarea[name=content]').ckeditorGet();
var element = CKEDITOR.dom.element.createFromHtml( '<p>I am a new paragraph</p>' );
editor.insertElement( element );
英雄似剑 2024-10-22 17:48:50

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

Looks like you're using jQuery also... why don't you force the inclusion of the p tag within CKEditor's .insertHtml function, then follow it up with jQuery's .unwrap to always remove the p tags?

自找没趣 2024-10-22 17:48:50

在主 ckeditor 配置文件中,有一个选项可以禁用自动

插入。
尝试将 CKConfig.EnterMode 和 CKConfig.ShiftEnterMode 的值更改为“br”。

菲利克斯

in the main ckeditor config-file there is an option to disable automatic <p> inserts.
try to change the value of CKConfig.EnterMode and CKConfig.ShiftEnterMode for example to 'br'.

Felix

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文