第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取包含HTML內(nèi)容的contentEditable區(qū)域中的插入符(光標)位置

獲取包含HTML內(nèi)容的contentEditable區(qū)域中的插入符(光標)位置

肥皂起泡泡 2019-09-21 14:27:33
我有contentEditable元素(可以是p,div,...),我想在其中獲得插入符號(光標)的位置。我通常可以通過以下代碼來實現(xiàn):var position = window.getSelection().getRangeAt(0).startOffset;當元素僅包含文本時,這可以正常工作。但是,當元素包含某些HTML格式時,返回的位置將相對于所包含HTML元素內(nèi)的插入符號位置。假設(shè)contentEditable元素的內(nèi)容是這樣的:AB<b>CD</b>EF如果插入符在inside <b></b>,比如說在C和D之間,則上面代碼返回的位置是1而不是3(從contentEditable元素內(nèi)容的開頭算起)有人可以提出解決方案嗎?
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經(jīng)驗 獲得超2個贊

這是一篇非常古老的文章,但仍然是在Google上搜索的第一批結(jié)果之一,因此也許仍然有用??紤]到html標記和換行符,這對我來說也能找到正確的位置(在Firefox上測試):


function getCaretPosition (node) {

    var range = window.getSelection().getRangeAt(0),

        preCaretRange = range.cloneRange(),

        caretPosition,

        tmp = document.createElement("div");


    preCaretRange.selectNodeContents(node);

    preCaretRange.setEnd(range.endContainer, range.endOffset);

    tmp.appendChild(preCaretRange.cloneContents());

    caretPosition = tmp.innerHTML.length;

    return caretPosition;

}

它使用cloneContents功能來獲取實際的html,并將documentfragment附加到臨時div上以獲取html的長度。



查看完整回答
1 反對 回復(fù) 2019-09-21
  • 3 回答
  • 0 關(guān)注
  • 2070 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號