您好我已经创建了以下ckeditor插件来插入YouTube视频:
(function() {
CKEDITOR.plugins.add('youtube', {
requires : ['iframedialog'],
init : function(editor) {
var iframeWindow = null;
CKEDITOR.dialog.add('youtube_dialog', function() {
return {
title : 'YouTube Movie Properties',
minWidth : 550,
minHeight : 200,
contents : [{
id : 'iframe',
label : 'Insert YouTube Movie',
expand : true,
elements : [{
type : 'iframe',
src : me.path + 'dialogs/youtube.html',
width : '100%',
height : '100%',
onContentLoad : function() {
iframeWindow = document.getElementById(this._.frameId).contentWindow;
}
}]
}],
onOk : function() {
this._.editor.insertHtml('<cke:youtube url="' + iframeWindow.document.getElementById('url').value + '">YouTube Video Place Marker</cke:youtube>');
}
};
});
editor.addCommand('youtube', new CKEDITOR.dialogCommand('youtube_dialog'));
editor.ui.addButton('YouTube', {
label : 'Insert YouTube Movie',
command : 'youtube',
icon : this.path + 'images/icon.gif'
});
}
});
})();
这工作正常,但我最近将我的ckeditor文件移到了CDN。现在,当我单击“确定”按钮时,我收到一个权限错误。我正在查看现有插件的来源,以了解它们是如何工作的,但无论我尝试过什么似乎都不起作用。为了获得基本的工作,我尝试将我的okOk事件更改为:
onOk : function() {
var hr = new CKEDITOR.dom.element('hr', editor.document );
editor.insertElement(hr);
}
但这给了我一个空引用异常。
如果有人能告诉我我做错了什么,我真的很感激。感谢
答案 0 :(得分:1)
问题已解决!解决方案是改变:
CKEDITOR.dialog.add('youtube_dialog', function()
为:
CKEDITOR.dialog.add('youtube_dialog', function(editor)
并改变:
this._.editor
为:
editor
希望这有帮助。