将BBCode以解析后的格式

时间:2016-02-21 18:46:31

标签: javascript parsing insert ckeditor bbcode

我们假设我在网页上有一个按钮,按下后,将使用BBCode格式化的特定$文本插入CKEditor。使用以下行可以很容易地将$ text插入到未解析的表单中:

CKEDITOR.instances.message.insertText(text);

但是如何将$ text插入已经解析过的表单中呢? .insertHtml以与insertText相同的形式粘贴。我知道它的Html但是找不到任何其他插入函数,所以我尝试了这个。

CKEDITOR.instances.message.insertHtml(text);

用preparsing粘贴东西的函数的名称是什么?当你执行CTRL + C和CTRL + V时,粘贴解析后的表单。

有人有想法吗?

2 个答案:

答案 0 :(得分:2)

你可以尝试这个:

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

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

答案 1 :(得分:0)

好的,感谢@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);

让我知道这是否有一些我忘记的缺陷或事情 - 比如异常?