window方法:getSelection()

2020-08-25 10:01 更新

getSelection()方法

getSelection() 方法可以返回一個 Selection 對象,表示用戶選擇的文本范圍或光標的當(dāng)前位置。

getSelection() 方法語法

selection = window .getSelection();
  • selection 是一個 Selection 對象。 如果想要將 selection 轉(zhuǎn)換為字符串,可通過連接一個空字符串("")或使用 String.toString() 方法。

getSelection()方法示例

function foo() {
    let selObj = window.getSelection(); 
    console.log(selObj);
    let selRange = selObj.getRangeAt(0);
    // 其他代碼
}

筆記

在 JavaScript 中,當(dāng)一個對象被傳遞給期望一個字符串(如:window.alert(),或document.write())的函數(shù)時,將調(diào)用該對象的 toString() 方法并將返回的值傳遞給該函數(shù)。當(dāng)它與其他函數(shù)一起使用時,當(dāng)它實際上是具有屬性和方法的對象時,這可以使對象看起來像是一個字符串。

在上面的示例中,在將它傳遞給 window.alert() 時會自動調(diào)用 selObj.toString()。但是,如果沒有該屬性或方法,直接在 Selection 對象上嘗試使用 JavaScript String 屬性或方法(如 length 或 substr)將導(dǎo)致錯誤,如果有,則可能會返回意外結(jié)果。要將Selection對象用作字符串,請直接調(diào)用其 toString() 方法:

var selectedText = selObj.toString();
  • selObj是一個Selection對象。
  • selectedText 是一個字符串(選定的文本)。

相關(guān)對象

你還可以使用 Document.getSelection(),兩個方法等價。

值得注意的是,目前在 Firefox, Edge (非 Chromium 版本) 及 Internet Explorer 中,getSelection() 對 <textarea> 及 <input> 元素不起作用。 HTMLInputElement.setSelectionRange() 或 selectionStart 及 selectionEnd 屬性可用于解決此問題。

還要注意選擇不同于焦點(詳見 Selection 及輸入焦點)??墒褂?Document.activeElement 來返回當(dāng)前的焦點元素.

規(guī)范

規(guī)范 狀態(tài) 注釋
Selection API 
該規(guī)范中'Window.getSelection()'的定義。
Working Draft
新規(guī)范
HTML編輯API 
該規(guī)范中“Window.getSelection()”的定義。
Editor's Draft
初步定義

瀏覽器兼容性



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號