CKEditor:调用没有工具栏按钮的插件函数

Rob*_*ali 1 javascript api ckeditor

如何在没有工具栏按钮的情况下调用插件功能?

我的 cms 中集成了一个外部浮动工具栏。我使用 CKEditor 的 InsertHTML() API 插入图像、视频和其他静态代码。

现在我还需要从 URL 插入视频,并且有很棒的 oembed 插件。如何在没有工具栏按钮的情况下使用我的 cms 中的按钮启动该插件?

我在我的配置中加载插件,并尝试创建此功能:

function oembed() {
// Get the editor instance that we want to interact with.
var editor = CKEDITOR.instances.editor1;
var url = 'http://www.youtube.com/watch?v=AQmbsmT12SE'
var wrapperHtml = jQuery('<div />').append(editor.config.oembed_WrapperClass != null ? '<div class="' + editor.config.oembed_WrapperClass + '" />' : '<div />');

// Check the active editing mode.
if ( editor.mode == 'wysiwyg' )
{
    // Insert HTML code.
    // http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertHtml
    editor.embedCode(url, editor, false, wrapperHtml, 650, 400, false);
}
else
    alert( 'You must be in WYSIWYG mode!' );
Run Code Online (Sandbox Code Playgroud)

}

结果是这样的:

未捕获的类型错误:对象 [object Object] 没有方法“embedCode”

有没有办法创建一个像“InsertHTML”这样的新API来调用没有工具栏按钮的插件功能?

编辑

也许我可以使用 createFakeElement API。

http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-createFakeElement

我将类 fakegallery 添加到我的文档中。

我使用此代码但没有任何反应:

      function Fake()
   {
      var editor = CKEDITOR.instances.editor1;
      var element = CKEDITOR.dom.element.createFromHtml( '<div class="bold"><b>Example</b></div>' );
      alert( element.getOuterHtml() ); 
      editor.createFakeElement( element, 'fakegallery', 'div', false );

   }
Run Code Online (Sandbox Code Playgroud)

小智 5

我发现这篇文章正在寻找答案...

查看这里的答案中提供的链接 [ http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-fire ],向下滚动到 execCommand

这对我有用,只需要您知道插件的名称,因此它始终有效。显然,您可能需要将“editable”更改为您的编辑器实例。

CKEDITOR.instances['editable'].execCommand('YOUR_PLUGIN_NAME_HERE');
Run Code Online (Sandbox Code Playgroud)

如果以上失败,HACK

这会起作用(下面的第一行代码),但需要您查看源代码以找到正确的#。如果你有 1 个自定义插件,没什么大不了的。但是,如果你有十几个或更多,就像我一样,这很烦人,并且可能会随着添加更多插件而改变。

CKEDITOR.tools.callFunction(145,this);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!