我尝试使用html元素创建自己的插件和对话框。单击html元素时,我希望将一些文本添加到编辑器中。我无法找到绕过onOk
功能的方法。
如果我在editor.insertHtml(' some code ')
函数中使用onOk
,则会添加文本,但如果我想在外面使用它,则会出现Uncaught TypeError: Cannot read property 'editor' of undefined(…)
错误。
访问编辑器的正确方法是什么?
CKEDITOR.dialog.add( 'smiley2', function( editor ) {
return {
title: 'Abbreviation Properties',
minWidth: 400,
minHeight: 200,
contents: [
{
id: 'tab-basic',
label: 'Basic Settings',
elements: [
{
type: 'html',
id: '2',
label: 'Explanation',
html: "<div onclick=\"editor.insertHtml(' some code ')\">add code</a></div></div>"
}
]
}
],
onShow : function()
{
document.getElementById(this.getButton('ok').domId).style.display='none'; // disapper ok btn
},
onOk: function() {
editor.insertHtml(' abbr ');
}
};
});
答案 0 :(得分:0)
CKEDITOR.dialog.add( 'smiley2', function( editor ) {
var onChoice = function(evt) {
var target;
target = new CKEDITOR.dom.element(evt);
editor.insertHtml("SMILEY YES!");
CKEDITOR.dialog.getCurrent().hide();
};
var onClick = CKEDITOR.tools.addFunction(onChoice);
return {
title: 'Abbreviation Properties',
minWidth: 400,
minHeight: 200,
buttons: [CKEDITOR.dialog.cancelButton],
contents: [
{
id: 'tab-basic',
label: 'Basic Settings',
elements: [
{
type: 'html',
id: '2',
label: 'Explana22tion',
html: "<div onclick=\"CKEDITOR.tools.callFunction(" + onClick +", this); return false;\" >111111</a></div></div>"
}
]
}
]
};
});
答案 1 :(得分:-1)
点击示例中的div
元素时,editor
不在您的范围内。您需要获取编辑器对象并使用其insertHtml
方法;
CKEDITOR.instances.editor1.insertHtml('your text`)
此示例假定您的textarea
ID为editor1
。