2011-09-06 55 views
2

我需要在CKEditor对话框中有两个选择菜单,第二个选择菜单根据第一个菜单的选定选项更改其选项。很简单,你会想到!但是在CKEditor中,获取CKEditor对象的DOM等价物似乎非常困难。我可以访问CKEditor对象,但不能访问其DOM对象。CKEditor如何获得UIElement

CKEditor select(UIElement)对象的实例具有一些有用的DOM交互,即getElement(),但我只能在CKEditor select“class”定义中的事件方法中使用特殊的this关键字访问此对象。

如何访问CKEditor UIElement对象(在本例中为select)的实例?我只有CKEditor对象的id,CKEditor因为一些令人沮丧的原因决定将随机ID应用于其DOM对象。

我试图访问的实例对象在这里是:(如何虽然获得这种情况下没有提到!) http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.select.html

回答

0

可以缓存您在setup回调你的对话框的初始化过程中需要什么?

您可以将setup函数传递给一个对象,并且可以将它们需要的东西放在那里。所以,你会传递一个对象到你设置的东西:

onShow: function() { 
    //... 
    this.cachedDomIds = { }; 
    this.setupContent(this.cachedDomIds); 
    //... 
} 

,然后在setup

setup: function(cache) { 
    //... 
    cache.some_dom_id = this.domId; 
    //... 
} 

那么至少你必须将所有真正的DOM ID属性的访问,你可以根据需要使用getElementById()

0

感谢您的建议万亩太短,

我发现我可以使用这种方法访问其他的选择菜单:

this.getDialog().getContentElement([insert_dialog_name_here], this.getValue()).getElement() 

this.getValue将有CKEditor的UI的相同的id元素我之后

0

实际上,CKEDITOR.dialog.getCurrent()方法将允许您从任何函数访问对话实例,并从那里您可以访问任何CKEditor对象的UIElement实例。