2016-02-21 38 views
1

假設我在網頁上有一個按鈕,當按下時,將用BBCode格式化的特定$ text插入到CKEditor中。這很容易使$文本中插入未解析的形式與這條線:將BBCode插入CKEditor的解析形式

CKEDITOR.instances.message.insertText(text); 

但我怎麼可以讓$文本已經被解析的形式插入? .insertHtml以與insertText相同的格式粘貼。我知道它的Html,但無法找到任何其他插入功能,所以我試過這個。

CKEDITOR.instances.message.insertHtml(text); 

什麼是粘貼的事情與preparsing的函數的名稱是什麼?當你做CTRL + C和CTRL + V時,你粘貼解析後的表單。

任何人有想法嗎?

回答

2

你可以試試這個:

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

它使用fromBBCode法BB代碼轉換成的HTMLParser的片段。

+0

謝謝@oleq,它可以工作,但部分。它只能像[quote]一樣單獨解析標籤,並忽略它的屬性和值,如下所示:[quote =「Vioner」pid =「3676」dateline =「1456144839」]。我不知道如何使這可能嗯。 – Ventricle

0

好的感謝@oleq CKEditor文檔和自定義js的源代碼找到了我找到解決方案的地方。

@oleq解決方案僅適用於解析不帶附加屬性的標籤。 所以[quote] [url]等不[quote="something"] [url="http://]

這一行應該分析和插入來自VAR文本的所有內容:從插件的MyBB的CKEditor在自定義文件

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

發現這個。基於代碼:

MyBBEditor.insertText(your_variable); 

讓我知道這是否有一些缺陷或東西我忘了 - 像例外:

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

是對他們的MyBB論壇CKEditor的插件,也可以使用用戶?