2017-08-15 154 views
3

我擁有在佔位符內通過ID引用圖像的內容(例如「$ m(12345)」)。我有一個REST調用,它將爲佔位符返回一個img標籤。CKEditor:在不改變數據的情況下修改視圖

我希望CKEditor在編輯器中打開內容或插入佔位符時顯示圖像。但我想佔位符留在內容

我已經嘗試通過添加規則到dataFilter做到這一點(包括切換到源視圖時):

CKEDITOR.on('instanceLoaded', function(ckeditor){ 
    var mediaPlaceholderRegex = /\$m\(.*\)/; 
    ckeditor.editor.dataProcessor.dataFilter.addRules({ 
     text: function(text, node) { 
       return text.replace(mediaPlaceholderRegex, function(match) { 

        var params = "placeholder="+match; 
        var xhttp = new XMLHttpRequest(); 
        xhttp.open("POST", url, false); 
        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
        xhttp.send(params); 
        return xhttp.responseText; 
       }); 
      } 
    }); 
}); 

它做的工作用圖像標籤替換佔位符,但切換到源視圖時img-tag也存在。

是否有一種簡單的方法只將過濾器應用於wysiwyg視圖。 我看到的唯一方法是添加一個htmlFilter,將img-tag恢復爲佔位符。

+0

這不是佔位符的要點。從源視圖來回切換將應用數據處理。 – Brunis

回答

0

是否有一種簡單的方法只適用於所見即所得的過濾器。我看到的唯一方法是添加一個htmlFilter,將img-tag恢復爲佔位符。

好想法。或者,如果您不希望在每次模式更改時從服務器中刪除/取出圖像,則可以將佔位符放入圖像標記的data-屬性中。這一切都取決於您的使用情況,但底線是dataFilter用於將數據加載到編輯器和htmlFilter當您從編輯器獲取數據(獲取數據和切換到源模式時使用相同的方法,因此htmlFilter適用於此處) 。

相關問題