亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

關于編輯框選中文本document.getSelection()的疑問

關于編輯框選中文本document.getSelection()的疑問

守候你守候我 2018-12-13 15:15:25
使用window.getSelection()獲取頁面中被選擇的文字,但發現這個方法只針對div這些標簽有效,對textarea中的內容獲取無效,自己感覺問題解決關鍵點在文本框輸入時主動獲取焦點的問題上,segmentfault的編輯框就處理了這個的,求怎么破?    doEdit:function(item){        if(document.getSelection){            let target =document.getSelection();            console.log(target)        }    }    現象看圖:
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

<textarea id="test"></textarea>


<script>

document.querySelector('#test').onselect = function(){

  let start = this.selectionStart;

  let end = this.selectionEnd;

  console.log(this.value.slice(start, end));

}

</script>

selection range 是基于 DOM Tree 的。Textarea 中的內容不由 DOM Tree管理,由 textarea 自己管理,因此你用 textarea.textContent 或者 textarea.innerText 也根本拿不到內容。 textarea 中的內容更改,也不會引起任何 node 或者 attribute 的變化,真正變化的是 textarea 的 value,這個 value 是 textarea 的 property.

注意 isCollapsed: true。這個值為 true 表示此時的 selection range 的長度為0,只是標記了一個位置,而不是一個 range 。

好在 textarea 自己由一套 selection 接口。


查看完整回答
反對 回復 2019-01-01
  • 1 回答
  • 0 關注
  • 435 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號