【问题标题】:ckeditor - onshow overiding custom definitionckeditor - onshow 覆盖自定义定义
【发布时间】:2015-08-17 20:17:45
【问题描述】:

当使用 ckeditor 链接对话框时,我有一些额外选项的自定义代码。我还想获取要使用的选定文本 - 所以我调用了:

selectedContents = CKEDITOR.instances['my_editor'].getSelection().getSelectedText();

我希望在加载对话框时发生这种情况。所以我写了一个“onShow()”处理函数......但这搞乱了我对对话框所做的自定义。我猜我的 onShow 正在抓取该事件的正常进程 - 我如何才能继续正常处理?

dialogDefinition.onShow = function(evt) 
{
  contents = CKEDITOR.instances['my_editor'].getSelection().getSelectedText();

  // now here, continue as you were...

}

【问题讨论】:

    标签: javascript ckeditor


    【解决方案1】:

    好的,我还有一些问题,但这个问题的答案是在覆盖之前获取现有的“onShow”处理程序。使用全局,然后可以在新的处理程序中调用它:

    var dialogDefinition = ev.data.definition;
    var oldOnShow = dialogDefinition.onShow;
    
    
    dialogDefinition.onShow = function(evt) {
        // do some stuff
        // do some more stuff
    
        // call old function
        oldOnShow();
    }
    

    【讨论】:

    • yuur 提议看起来像解决方案。但不适用于我的问题 v4.5.3;第一次调用对话框 - 清除控制台;下一个显示错误:未捕获的类型错误:this.getParentEditor 不是函数(…)我所做的一切:` var oldOnShow = dialogDefinition.onShow;控制台.log(oldOnShow); dialogDefinition.onShow = function () { console.log('here'); oldOnShow(); }`
    • 我正在覆盖“链接”对话框。当我按照您的指示调用“onShow”时,出现错误......但是上一篇文章“oldOnShow.call(this,arguments);”工作正常。
    【解决方案2】:

    取决于安迪华莱士代码:

    var oldOnShow = dialogDefinition.onShow;
    var newOnShow = function () { 
    //your code 
    }
    

    然后:

    dialogDefinition.onShow = function(){
    
                        oldOnShow.call(this, arguments);
                        newOnShow.call(this, arguments);
    
                    }
    

    对我有帮助!

    【讨论】:

      【解决方案3】:

      正确的语法是:

      /* if new picture, then open the Upload tab */
      CKEDITOR.on('dialogDefinition', function(ev) {
          var dialogName = ev.data.name;
          var dialogDefinition = ev.data.definition;
          var dialog = dialogDefinition.dialog;
          if (dialogName == 'image2') {
              dialogDefinition.onShow = CKEDITOR.tools.override(dialogDefinition.onShow, function(original) { 
                  return function() {
                      original.call(this);
                      CKEDITOR.tools.setTimeout( function() {
                          if (dialog.getContentElement('info', 'src').getValue() == '') {
                              dialog.selectPage('Upload');
                          }
                      }, 0);
                  }
              });
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-12
        • 2013-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多