我需要在CKEditor对话框中有两个选择菜单,第二个选择菜单根据第一个菜单的选定选项更改其选项。你会想到的很简单!但是在CKEditor中,获取与CKEditor对象相当的DOM似乎非常困难。我可以访问CKEditor对象,但不能访问它的DOM等价物。
CKEditor select(UIElement
)对象的实例有一些有用的DOM交互,即getElement()
,但我只能在CKEditor选择“类”中的事件方法中使用特殊的this关键字访问此对象“定义。
如何访问CKEditor UIElement
对象的实例(在本例中为select)?我只有CKEditor对象的id,CKEditor出于某种令人沮丧的原因决定将随机id应用于其DOM对象等价物。
我试图访问的实例对象在这里记录:(没有提到如何获取此实例!) http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.select.html
答案 0 :(得分:1)
实际上,CKEDITOR.dialog.getCurrent()
方法允许您从任何函数访问Dialog实例,并从那里可以访问您所追求的任何CKEditor对象的UIElement
实例。
答案 1 :(得分:0)
您可以在对话框初始化期间缓存setup
回调中所需的内容吗?
您可以将setup
函数传递给对象,他们可以将所需内容放在那里。所以你要将一个对象传递给你的设置内容:
onShow: function() {
//...
this.cachedDomIds = { };
this.setupContent(this.cachedDomIds);
//...
}
然后在setup
:
setup: function(cache) {
//...
cache.some_dom_id = this.domId;
//...
}
然后至少你可以访问所有真正的DOM id属性,你可以根据需要getElementById()
。
答案 2 :(得分:0)
感谢mu太短的建议,
我发现我可以使用此方法访问其他选择菜单:
this.getDialog().getContentElement([insert_dialog_name_here], this.getValue()).getElement()
this.getValue将具有我所追求的CKEditor UI元素的相同ID