簡體   English   中英

如何從 contenteditable 獲得“刪除插入符號位置”?

[英]How can I get the "drop caret position" from contenteditable?

如果從contenteditable拖動一個元素,瀏覽器通常會顯示這樣一個“中間插入符號”,如下圖所示:

在此處輸入圖片說明

我正在尋找一種簡單可靠的解決方案,通過拖放將元素 ID 作為傳輸數據發送,從而從contenteditable拖動元素。 然后,在ondrop方法中,我打算將draggable放置在此“中間插入符”當前所在的確切位置。

問題是:我能從所有瀏覽器中獲取這些信息嗎?

我確實有一個基礎( JSFiddle ),但目前這對我來說遠沒有用。

PS:我沒有使用 jQuery 或任何其他庫。

查看document.caretRangeFromPointe.rangeParent, e.rangeOffset

這是一個演示https://jsfiddle.net/znghofxt

 function dragElement(e) { e.dataTransfer.setData('text/plain', e.target.id); } function drop(e) { e.preventDefault(); var id = e.dataTransfer.getData("text/plain"); if (document.caretRangeFromPoint) { // edge, chrome, android range = document.caretRangeFromPoint(e.clientX, e.clientY) } else { // firefox var pos = [e.rangeParent, e.rangeOffset] range = document.createRange() range.setStart(...pos); range.setEnd(...pos); } range.insertNode(document.getElementById(id)); }
 .fancy { background-color: #123456; color: white; border-radius: 8px 8px 8px 8px; cursor:pointer; display: inline-block; padding: 20px; } .fancy-img { cursor:pointer; display: inline-block; }
 <div contenteditable="true" ondrop="drop(event)"> More blah about <a id="dragme" href="http://www.google.com" class="fancy" contenteditable="false" ondragstart="dragElement(event)"> :( </a> Sparta! </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM