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

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

有沒有辦法訂閱 window.getSelection 的變化?

有沒有辦法訂閱 window.getSelection 的變化?

FFIVE 2023-05-19 19:56:27
我們可以通過 獲得一個選擇范圍window.getSelection()。我想知道是否有辦法訂閱window.getSelection更改。我想到的唯一方法是使用超時(這顯然很糟糕)或訂閱每個用戶的鍵\鼠標按下事件并手動跟蹤更改。
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

使用onselect事件。

function logSelection(event) {

? const log = document.getElementById('log');

? const selection = event.target.value.substring(event.target.selectionStart, event.target.selectionEnd);

? log.textContent = `You selected: ${selection}`;

}


const textarea = document.querySelector('textarea');

textarea.onselect = logSelection;

<textarea>Try selecting some text in this element.</textarea>

<p id="log"></p>


對于特定情況,例如span contenteditable,您可以制作一個 polyfill:


function logSelection() {

? const log = document.getElementById('log');

? const selection = window.getSelection();

? log.textContent = `You selected: ${selection}`;

}


const span = document.querySelector('span');


var down = false;

span.onmousedown = () => { down = true };

span.onmouseup = () => { down = false };

span.onmousemove = () => {

? if (down == true) {

? ? logSelection();

? }

};

<span contenteditable="true">Try selecting some text in this element.</span>

<p id="log"></p>



查看完整回答
反對 回復 2023-05-19
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

如果我以正確的方式取消描述,你想知道用戶何時開始在頁面上進行選擇,你可以使用 DOM onselectstart。

document.onselectstart?=?function()?{
??console.log("Selection?started!");
};
查看完整回答
反對 回復 2023-05-19
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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