CKEditor如何获得UIElement

时间:2011-09-06 05:57:44

标签: javascript ckeditor uielement

我需要在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

3 个答案:

答案 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