如何在没有工具栏按钮的情况下调用插件功能?
我的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!' );
}
结果如下:
未捕获的TypeError:对象[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 );
}
答案 0 :(得分:4)
我发现这篇文章正在寻找答案......
选中此处[[{3}}]答案中提供的链接,向下滚动到execCommand
这对我有用,只要求您知道插件的名称,所以它始终有效。显然,您可能需要更改“可编辑的”#34;到您的编辑器实例。
CKEDITOR.instances['editable'].execCommand('YOUR_PLUGIN_NAME_HERE');
如果上述操作失败, HACK :
这可行(下面第一行代码),但要求你查看源代码以找到正确的#。如果你有一个自定义插件,没什么大不了的。但如果你有十几个或更多,像我一样,这很烦人,并且可能会随着更多插件的添加而改变。
CKEDITOR.tools.callFunction(145,this);
希望这有帮助!
答案 1 :(得分:0)
阅读本文: http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-fire
editor.fire( 'MediaEmbed', data);
我认为这是您的数据需要的结构:
var data = {title : 'Embed Media',
minWidth : 550,
minHeight : 200,
contents :
[
{
id : 'iframe',
expand : true,
elements :[{
id : 'embedArea',
type : 'textarea',
label : 'Paste Embed Code Here',
'autofocus':'autofocus',
setup: function(element){
},
commit: function(element){
}
}]
}
]}
我不安全,但这会帮助你。 查看插件的源代码以查找可用的命令。 我上面指定的命令名是你的插件唯一的名称。
编辑 - 手动插入
var div = editor.document.createElement('div');
div.setHtml("<embed src=" + url +" width=" + width +" height=" + height + ">");
editor.insertElement(div);
你可以添加你喜欢的每个属性,Type?莫比?自动对焦??