2011-09-06 98 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實例。