這個問題已經在這個網站的其他地方回答:Precise Drag and Drop within a contenteditable
那裏有具體到每個瀏覽器代碼(通過特徵檢測),目前僅適用於Chrome和Firefox工程的解決方案。對於Chrome,需要使用document.caretRangeFromPoint
從鼠標座標計算範圍。對於Firefox,事件對象具有rangeParent
和rangeOffset
屬性,可用於確定插入符號的位置。
document.addEventListener("drop", function(e) {
var sel = document.getSelection();
if(document.caretRangeFromPoint) { // Chrome
var range = document.caretRangeFromPoint(e.clientX,e.clientY);
sel.removeAllRanges();
sel.addRange(range);
} else if(e.rangeParent) { // Firefox
var range = document.createRange();
range.setStart(e.rangeParent, e.rangeOffset);
sel.removeAllRanges();
sel.addRange(range);
} else if(sel.rangeCount == 0) { // Default to at least not completely failing
var range = document.createRange();
sel.addRange(range);
}
// The selection is now in the right place - proceed with whatever the drop should do
});
此代碼的設計與整個文件是可編輯的工作 - 爲可編輯的DIV,你需要設置該div事件監聽器,並修改回退的情況下,以保證選擇內div。
我不是什麼問題相當清楚。 –
嗨蒂姆我已經使用你的代碼在這個http://jsfiddle.net/rmossuk/qLQtK/2/獲取光標位置,當我把圖像放到contentEditable。但是這隻有在我首先點擊contentEditable內部然後將圖像拖入它時纔有效。我想要做的不是點擊或選擇contentEditable中的文本,只需拖放圖像,然後拖放圖像,我想要在文本中獲取鼠標的位置,以便我可以將圖像代碼添加到該圖像中在文本中的位置。希望這是有道理的?你能幫我嗎 ?非常感謝 –
這似乎已經在這裏得到了解答:http://stackoverflow.com/questions/3006623/drag-n-drop-on-contenteditable-elements - 雖然我不喜歡那個答案很多,我仍然期待。 – Brilliand