2012-02-22 76 views
0

你好我試圖通過消除出現在鏈接對話框中的目標選項卡中的鏈接目標類型下拉列表中所有,但2個選項做出一些改變我們的執行CKEDITOR 3.6.2CKEditor編輯器實例.lang未定義?

的。

我試圖用API來實現這一點,但是我在這行X = S.lang.dir的dialog()方法中的縮小核心ckeditor.js文件中出現錯誤。 S是編輯。

查看調試「編輯器」對象時,編輯器實例的.lang屬性在執行CKEDITOR.dialog(編輯器,「鏈接」)時未定義我沒有在任何地方看到lang對象,所以我不是肯定爲什麼這是失蹤?我沒有在我們的原始實現上工作,但據我所知,我們只添加了2個插件,並沒有改變ckeditor核心。

這裏是我的代碼:

for (var i in CKEDITOR.instances) { 
    var editor = CKEDITOR.instances[i]; 
    var dialogObj = CKEDITOR.dialog(editor, 'link'); 
    var linkDialogTargetField = dialogObj.getContentElement('target', 'linkTargetType'); 
    // API didn't seem to have a more efficient approach than clearing all and re-adding the one we want 
    linkDialogTargetField.clear(); 
    linkDialogTargetField.add('notSet', '<not set>'); 
    linkDialogTargetField.add('_blank', 'New Window (_blank)'); 
} 

我設法使我的變化沒有正確使用API​​做以下:

CKEDITOR.on('dialogDefinition', function (ev) { 
    // Take the dialog name and its definition from the event 
    // data. 
    var dialogName = ev.data.name; 
    var dialogDefinition = ev.data.definition; 

    // Check if the definition is from the dialog we're 
    // interested on (the "Link" dialog). 
    if (dialogName == 'link') { 
     // Get a reference to the "Link target" tab. 
     var targetTab = dialogDefinition.getContents('target'); 

     var targetField = targetTab.get('linkTargetType'); 
     // removing everything except the 1st (none set) & 3rd (new window) options from the dropdown 
     targetField['items'].splice(1, 2); 
     targetField['items'].splice(2, 3); // the array is reduced by splice, so we have to splice from [2] onwards not from [4] 
    } 
}); 

,但我不喜歡這種方法,確實有人有主意嗎?或其他方式使用API​​實現相同的結果?

+0

更改對話框內容的API是第二個示例。第一個不是你會在任何關於CKEditor的例子或教程中看到的東西,我不知道你爲什麼認爲這是正確的方法。 – AlfonsoML 2012-02-22 22:08:59

+0

也許是因爲所有的例子都過時了,我直接去http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.html – Pricey 2012-02-23 09:24:27

回答

0

使用第二種方法並覆蓋下拉項而不是拼接。