ckeditor对话框定位

Yeh*_*tan 11 windows user-interface dialog ckeditor

默认情况下,CKEditor的对话窗口显示在页面中间,但如果页面是高度较大的iframe,则对话框显示在页面的下方.

是否可以配置CKEditor将对话框放置在页面的不同象限中?例如中顶?

zaf*_*zaf 14

是的,MDaubs提供的链接将指导您做您想做的事情.

我过去必须这样做,以下代码片段将演示您的问题的解决方案:

CKEDITOR.on('dialogDefinition', function(e) {
    var dialogName = e.data.name;
    var dialogDefinition = e.data.definition;
    dialogDefinition.onShow = function() {
            this.move(this.getPosition().x,0); // Top center
    }
})
Run Code Online (Sandbox Code Playgroud)

您可以将它放在配置文件或jQuery的ready函数中.


jam*_*mix 9

zaf解决方案的工作原理是它有助于定位对话框,但我发现它产生了一系列副作用,说明对话框的功能如何(无法在图像对话框中显示图像的URL就是一个例子) .

事实证明,onShow()被覆盖的原始方法返回了一个我们应该保留的有意义的值.这可能是由于插件或其他东西,但这里的代码最终对我有用:

CKEDITOR.on('dialogDefinition', function(e) {
  var dialogName = e.data.name;
  var dialogDefinition = e.data.definition;
  var onShow = dialogDefinition.onShow;
  dialogDefinition.onShow = function() {
    var result = onShow.call(this);
    this.move(this.getPosition().x, $(e.editor.container.$).position().top);
    return result;
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案很好,除了我有一些不起作用的旧插件,并且会抛出错误"Uncaught TypeError:无法读取未定义的属性'调用'".我必须检查if(typeof onShow!=='undefined'&& typeof onShow.call ==='function')而不是总是返回结果.之后他们似乎都运作良好. (3认同)