Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以自定义ckeditor插件对话框的“确定”和“取消”按钮的标签吗_Javascript_Ckeditor_Customization - Fatal编程技术网

Javascript 我可以自定义ckeditor插件对话框的“确定”和“取消”按钮的标签吗

Javascript 我可以自定义ckeditor插件对话框的“确定”和“取消”按钮的标签吗,javascript,ckeditor,customization,Javascript,Ckeditor,Customization,我已经在CK编辑器JS框架中创建了插件。我能够为我的插件显示一个带有几个字段的对话框。但我需要控制“确定”和“取消”按钮的css属性,如标签、颜色等。是否可以进行此自定义?这里有两种方法: 您可以自定义按钮和自定义属性 您可以重写这个方法—更粗糙,因此我建议您尝试使用第一个方法 有一种覆盖方法,它覆盖传入的参数。它在Ckeditor 4上对我有效。试试看: CKEDITOR.dialog.add( 'getlinkDialog', function ( editor ) { retur

我已经在CK编辑器JS框架中创建了插件。我能够为我的插件显示一个带有几个字段的对话框。但我需要控制“确定”和“取消”按钮的css属性,如标签、颜色等。是否可以进行此自定义?

这里有两种方法:

  • 您可以自定义按钮和自定义属性
  • 您可以重写这个方法—更粗糙,因此我建议您尝试使用第一个方法

有一种覆盖方法,它覆盖传入的参数。它在Ckeditor 4上对我有效。试试看:

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文件。我希望有人能提供更好的解决方案,这样我就可以避免这个棘手的问题。