ckeditor对话框定位

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

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

是的,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 } }) 

你可以把它放在配置文件或jQuery的ready函数中。

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; } }); 

这可能是你正在寻找的方式:

以编程方式设置CKEditor对话框的位置

我只是和Yehonatan有同样的问题,通过Google发现这个问题非常快。 但是,在使用由zaf提供的答案后,我仍然没有得到一个对话框,当编辑器被加载到一个iframe中时,在正确的位置出现。

而不是使用position()方法,我使用offset()方法在工具栏下面放置一个对话框。 再加上jonespm的响应,我发现这个代码看起来很好,还有现有的对话框。

 CKEDITOR.on('dialogDefinition', function(e) { var dialogName = e.data.name; var dialogDefinition = e.data.definition; var onShow = dialogDefinition.onShow; dialogDefinition.onShow = function() { this.move(this.getPosition().x, jQuery(this.getParentEditor().container.$).offset().top); if (typeof onShow !== 'undefined' && typeof onShow.call === 'function') { return onShow.call(this); } } }); 

希望这个代码可以帮助别人解决和我一样的问题。