經過大量的擺弄工作之後,我得出結論說我不可能使用自定義的onclicks,而我想要的方式是ckeditor。相反,我設計了以下解決方法,因爲我真的只能從editor.getData返回的數據感興趣的()是正確的:
相反,我創建了一個在對話框
element.setAttribute('onclick' , 'window.location=\'' + this.getValue() + '\'');
這樣的onclick登記的對於放在location.href自定義數據屬性
element.setAttribute('data-custom-click' , 'location.href=\'' + this.getValue() + '\'');
然後,在創建該按鈕和寄存器上述對話插件的初始化,我註冊兩個事件處理程序
起
editor.on('getData', function(e) {
e.data.dataValue = e.data.dataValue.replace(' data-custom-click=', ' onclick=');
});
editor.on('setData', function(e) {
e.data.dataValue = e.data.dataValue.replace(' onclick=',' data-custom-click=');
});
getData
火災,根據文檔
所述的getData調用返回之前,允許額外的操作。
setData
,在另一方面,觸發
執行使用setData呼叫之前,允許額外的操作。
因此,與這些事件處理程序的編輯器將的onclick轉變爲加載HTML時,從而使我的按鈕的安全,同時編輯數據定製單擊,任意變換回的數據,自定義點擊的onclick時editor.getData( )被調用,爲我提供了「真實」頁面的工作按鈕。
這是一種黑客,但它的工作=)
您是否嘗試過使用element.addEventListener?參考http://stackoverflow.com/questions/6348494/addeventlistener-vs-onclick –
唉,@ luis-periera,參數元素是指CKEditors元素[http://docs.ckeditor.com/#!/api/ CKEDITOR.dom.element],所以addEventListener不是一個函數。它有一個.on('event type',函數),但是它的行爲與我原來的onclick解決方案相同 –