在 CKEDitor 中最大化/调整对话窗口的大小

Maximizing / Resizing a dialog window in CKEDitor

提问人:Pekka 提问时间:2/9/2010 最后编辑:Pekka 更新时间:2/17/2010 访问量:3399

问:

我需要以编程方式最大化/调整 CKEditor IFrame 对话框的大小(即带有“确定”和“取消”按钮的 CKEditor 对话框,其余部分的 iframe)。我需要对话框保持在屏幕上的中心。

我只能看到调整窗口大小和重新定位窗口的函数,但要使用这些函数,我必须先计算窗口尺寸以使其重新居中。由于多种原因,这是愚蠢的,API 应该完全处理它。

是否有官方的 API 函数来执行此操作,或者安全的解决方法?

我可以使用 JQuery,但真的很想为此使用本机函数。

javascript css ckeditor

评论

0赞 Upperstage 2/9/2010
iFrame 位于对话框(弹出窗口)中,而 CKEditor 位于对话框中?
0赞 Pekka 2/9/2010
不,当您单击 CKEditor 按钮时,这是一个自定义对话框,并且该对话框窗口包含一个 IFRAME。如果您不会或不能使用 CKEditor 的内置对话系统,这是首选方法。
0赞 Upperstage 2/12/2010
你有没有机会使用jQuery或ExtJS?

答:

1赞 mythz 2/12/2010 #1

我自己也在使用 CKEditor,但选择将 jquery 的 UI 对话框用于我的自定义对话框,因为它更加灵活且功能丰富,开箱即用,可在以下位置获得:

http://docs.jquery.com/UI/Dialog

但是,如果您更喜欢使用自定义 CKEditor 对话框,那么 jQuery 的 position():

http://api.jquery.com/position/

height()、width() 和 offset() 在确定对话框的大小和位置方面非常宝贵:

http://api.jquery.com/category/manipulation/style-properties/

评论

1赞 Pekka 2/12/2010
干杯@mythz,这听起来很有趣。目前,我已经在 CKEditor 对话系统上投入了大量资金,我不想随着手头的项目而改变,但对于下一个项目,我一定会看看这个。
2赞 Adam Kiss 2/17/2010 #2

如果您同时调整大小和重新定位,那么执行一个功能并不难:

(这是伪javascript,因为我没有时间打磨它,所以基本上是想法)

function dialogResizeCentered (d,w,h){ //d-dialog, w,h-width, height
  var sw,sh; //screenwidth, screenheight
  var rx,ry; //null atm, for resize x, resize y
  get sw, sh from window. object
  rx = parseInt(sw/2-w/2);
  ry = parseInt(sh/2-h/2);
  d.call resize (w,h);
  d.call reposition(rx,ry);
}

然后您可以随时致电dialogResizeCentered(d,600,400);

或?

或者,如果您希望对话框保持居中,我敢肯定有类似事件的东西可以调用此函数。window.onResize

我希望我理解正确:)

评论

0赞 Pekka 2/17/2010
@Adam,调整对话框大小有许多副作用(我还需要调整嵌入的 iframe 的大小,由于一些跨浏览器问题,它具有绝对高度,并且可能重新定位一些按钮)。我想尽可能地保持它的原生性,因为我正在开发一个插件,我可能想把它放到(并作为)独立产品中分发。这就是为什么我希望在(仍然没有很好的文档)CKEditor API 中找到原生函数的原因。否则,我可能会使用这样的东西。