其他什麼uadrive回答:
insertAtCaret
不會與任何實時編輯器打造成它們都使用CONTENTEDITABLE iframe中。底層teaxtarea(或其他HTML元素)在初始化時隱藏。
uadrive是正確的,您將不得不添加處理程序到該iframe,以便在需要時執行任何操作。如果您使用tinymce配置參數「paste_block_drop」,則您將無法執行任何拖動操作,因爲如果將此參數設置爲true,則所有拖放事件都將被阻止。
要在TinyMCE的插入位置插入代碼中有使用命令:
tinyMCE.execCommand('mceInsertContent', false, 'my new content to be added');
下面是一些代碼一起玩(這是一個動作我在編輯器中滴做我重建插入內容,然後根據我的需要添加/過濾它,並將其插回到編輯器中)。
setup : function(ed)
{
ed.onInit.add(function(ed){
$(ed.getDoc()).bind('drop', function(event){
ed.content_pre = ed.getContent();
ed.drag_content_html = event.originalEvent.dataTransfer.getData('text/html');
ed.drag_content_plain1 = event.originalEvent.dataTransfer.getData('text/plain');
//console.log('x', ed.content_pre, ed);
tinymce.activeEditor = ed;
setTimeout(function(){
var ed = tinymce.activeEditor;
var content_post = ed.getContent();
var diff_front = 0;
for (var i=0; i < ed.content_pre.length; i++) {
if (ed.content_pre.charCodeAt(i) !== content_post.charCodeAt(i)) {
diff_front = i;
break;
}
}
if (ed.content_pre.substr(diff_front-2, 2) == '<p') diff_front -= 2;
if (ed.content_pre.substr(diff_front-1, 1) == '<') diff_front -= 1;
ed.setContent(ed.content_pre.substr(0, diff_front) + ed.drag_content_plain1 + ed.content_pre.substr(diff_front));
},0);
});
});
},
你是什麼意思「不是我們想要的系統」? – simshaun
我們不希望用戶拖放任何鏈接或任何東西。拖放列表非常具體,它是純文本。 – littleghost76
我對TinyMCE的功能和可配置性感到不滿,所以我選擇了CKEditor。您可能無法使用_insertAtCaret_,但有模擬功能可以做到這一點,如果您對處理不滿意,則可以輕鬆編寫插件。 – Smamatti