我已經爲上述問題做了一個解決方法。在ckeditor instnaceReady中,我添加了js頭部部分的ckeditor iframe。
CKEDITOR.on('instanceReady', function(ev) {
var oEditor = CKEDITOR.instances.editor;
var h = oEditor.document.getHead();
var element1 = oEditor.document.createElement('script');
element1.setAttribute('src','//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js');
element1.setAttribute('type','text/javascript');
h.append(element1);
var element2 = oEditor.document.createElement('script');
element2.setAttribute('src','//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js');
element2.setAttribute('type','text/javascript');
var element3 = oEditor.document.createElement('script');
element3.setAttribute('src','drag.js');
element3.setAttribute('type','text/javascript');
h.append(element2);
h.append(element3);
function drag() {
try {
$('iframe').get(0).contentWindow.EnableDrag();
}
catch(err) {
setTimeout(drag,10);
}
};
setTimeout(drag,10);
});
在drag.js中,我添加了EnableDrag()函數。
EnableDrag = function() {
$('#Layer1').draggable();
}
此代碼適用於ff,chrome和IE。
這個代碼還有一些問題,每次我們改變ckeditor的內容或者使用source按鈕,綁定和包含在頭部的js都迷路了。此外,EnableDrag功能在創建和附加對象後不可用。所以我用setTimeout來添加延遲。在Firefox中,拖動不是很平滑。
如果有人知道實現這個的正確方法,請幫忙。