Javascript 我可以自定义ckeditor插件对话框的“确定”和“取消”按钮的标签吗
我已经在CK编辑器JS框架中创建了插件。我能够为我的插件显示一个带有几个字段的对话框。但我需要控制“确定”和“取消”按钮的css属性,如标签、颜色等。是否可以进行此自定义?这里有两种方法:Javascript 我可以自定义ckeditor插件对话框的“确定”和“取消”按钮的标签吗,javascript,ckeditor,customization,Javascript,Ckeditor,Customization,我已经在CK编辑器JS框架中创建了插件。我能够为我的插件显示一个带有几个字段的对话框。但我需要控制“确定”和“取消”按钮的css属性,如标签、颜色等。是否可以进行此自定义?这里有两种方法: 您可以自定义按钮和自定义属性 您可以重写这个方法—更粗糙,因此我建议您尝试使用第一个方法 有一种覆盖方法,它覆盖传入的参数。它在Ckeditor 4上对我有效。试试看: CKEDITOR.dialog.add( 'getlinkDialog', function ( editor ) { retur
- 您可以自定义按钮和自定义属性
- 您可以重写这个方法—更粗糙,因此我建议您尝试使用第一个方法
CKEDITOR.dialog.add( 'getlinkDialog', function ( editor ) {
return {
title: 'Dialog title',
minWidth: 300,
minHeight: 70,
contents: [
{
id: 'getlink-basic',
label: 'Basic Settings',
elements: [
{
type: 'text',
id: 'link',
label: 'Enter your name'
}
]
}
],
buttons: [
CKEDITOR.dialog.okButton.override( { label : 'My Label'} ),
CKEDITOR.dialog.cancelButton.override( {} )
],
onOk: function() {
//Your code
}
};
});
我搜索了很多,没有一个漂亮的解决方案适合我。这就是为什么我使用了更丑陋但有效的解决方案
CKEDITOR.on( 'dialogDefinition', function( ev ) {
// Take the dialog window name and its definition from the event data.
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
console.log("dialogDefinition", dialogDefinition);
console.log("dialogName", dialogName);
setTimeout(function () {
console.log("$('.cke_dialog_ui_button_ok').length", $('.cke_dialog_ui_button_ok').length);
$('span', '.cke_dialog_ui_button_ok').html("Save");
}, 100);
});
您甚至不会注意到文本是何时更改的。如果有更好的选择,请分享。谢谢您的回复。在论坛发帖之前,我尝试了这两种方法,但似乎都不管用。OK和Cancel似乎是对话框定义中的静态按钮,这是它们的实现,看起来我们无法轻松覆盖它们。okButton:function(){var a=function(a,b){b=b | |{};return CKEDITOR.tools.extend({id:“OK”,type:“button”,label:a.lang.common.OK,“class”:“cke_dialog_ui_button_ok”,onClick:function(a){a=a.data.dialog;!1!==a.fire(“ok”{hide:!0}).hide&&a.hide()},b,!0};a.type=“button”;a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:“button”},!0)};返回一个}准确地说,尝试在对话框的onLoad处理程序中自定义CKEDITOR.dialog.definition#按钮。它似乎在对象(在控制台中求值)中更改了它,但在UI中没有。它似乎在对象(在控制台中求值)中更改了它,但在UI中没有。“-我认为这是因为您可能会在创建对话框后覆盖它,是吗?是的,是的。就像我说的,我在对话框中使用了onLoad处理程序。这是否类似于在加载对话框之后,如果我对对象进行了更改,我必须做一些额外的事情来在UI中反映它?是的。可能不是生产代码的选项:)无论如何,谢谢。@Oceanvijai同意。但是我在image2插件中没有找到任何适合我的东西。我不能直接覆盖image2文件。我希望有人能提供更好的解决方案,这样我就可以避免这个棘手的问题。