【问题标题】:Insert BBCode into CKEditor's in parsed form将 BBCode 以解析后的形式插入 CKEditor
【发布时间】:2016-02-21 18:46:31
【问题描述】:

假设我在网页上有一个按钮,当按下该按钮时,将使用 BBCode 格式化的特定 $text 插入 CKEditor。使用这一行很容易使 $text 以未解析的形式插入:

CKEDITOR.instances.message.insertText(text);

但是我怎样才能使 $text 以已经解析的形式插入呢? .insertHtml 以与 insertText 相同的形式粘贴。我确实知道它用于 Html,但找不到任何其他插入功能,所以我尝试了这个。

CKEDITOR.instances.message.insertHtml(text);

粘贴带有准备的东西的函数的名称是什么?当您执行 CTRL+C 和 CTRL+V 时,您将粘贴已解析的表单。

有人有想法吗?

【问题讨论】:

    标签: javascript parsing insert ckeditor bbcode


    【解决方案1】:

    你可以试试这个:

    var writer = new CKEDITOR.htmlWriter();
    CKEDITOR.htmlParser.fragment.fromBBCode( '[b]Bold[/b]' ).writeHtml( writer );
    CKEDITOR.instances.message.insertHtml( writer.getHtml() );
    

    它使用fromBBCode方法将BBCode转换成htmlParser的片段。

    【讨论】:

    • 感谢@oleq,它可以工作,但只是部分工作。它只像 [quote] 一样单独解析标签,并忽略它的属性和值,如下所示:[quote="Vioner" pid="3676" dateline="1456144839"]。我想知道如何使这成为可能嗯。
    【解决方案2】:

    好的,感谢@oleq CKEditor 文档和在某处找到的定制 js 的源代码,我找到了解决方案。

    @oleq 解决方案仅适用于解析没有附加属性的标签。 所以[quote] [url]等不是[quote="something"] [url="http://]

    这一行应该解析并插入 var text 中的所有内容:

    clickableEditor.Insert(text, bbcodeParser.bbcodeToHtml(text));
    

    在插件 MyBB CKEditor 的自定义文件中找到了这个。基于代码:

    MyBBEditor = {
        insertText: function(a)
        {
            if(clickableEditor.editor.mode == 'wysiwyg')
            {
                clickableEditor.Insert(a, bbcodeParser.bbcodeToHtml(a));
            }
            else
            {
                clickableEditor.performInsert(a);
            }
        }
    }
    

    在 MyBB 论坛上拥有 CKEditor 插件的用户也可以使用:

    MyBBEditor.insertText(your_variable);
    

    让我知道这是否有一些缺陷或我忘记了什么——比如例外?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多