Window: getSelection() 方法
Window 介面的 getSelection() 方法返回與視窗的 document 關聯的 Selection 物件,該物件表示使用者選擇的文字範圍或插入符的當前位置。
語法
getSelection()
引數
無。
返回值
一個 Selection 物件,如果關聯的文件沒有 瀏覽上下文(例如,視窗是未附加到文件的 <iframe>),則返回 null。
當在未顯示的 <iframe> 上呼叫時(例如,設定了 display: none),Firefox 返回 null,而其他瀏覽器則返回一個 Selection 物件,其 Selection.type 設定為 None。
示例
function foo() {
const selObj = window.getSelection();
alert(selObj);
const selRange = selObj.getRangeAt(0);
// do stuff with the range
}
注意
Selection 物件的字串表示形式
在 JavaScript 中,當一個物件被傳遞給一個需要字串的函式時(例如 window.alert() 或 document.write()),該物件的 toString() 方法會被呼叫,並返回值傳遞給函式。當物件與其他函式一起使用時,它可能看起來像一個字串,但實際上它是一個具有屬性和方法的物件。
在上面的示例中,當 selObj 被傳遞給 window.alert() 時,會自動呼叫 selObj.toString()。然而,嘗試直接在 Selection 物件上使用 JavaScript String 屬性或方法(如 length 或 substr)將導致錯誤(如果它沒有該屬性或方法),並且如果它確實有,也可能返回意外的結果。要將 Selection 物件用作字串,請直接呼叫其 toString() 方法。
const selectedText = selObj.toString();
selObj是一個Selection物件。selectedText是一個字串(選中的文字)。
相關物件
你可以呼叫 Document.getSelection(),它與 Window.getSelection() 的工作方式相同。
值得注意的是,目前在 Firefox 和 Edge (Legacy) 中,getSelection() 在 <textarea> 和 <input> 元素的內容上不起作用。可以使用 HTMLInputElement.setSelectionRange() 或 selectionStart 和 selectionEnd 屬性來解決此問題。
還要注意selection(選擇)和focus(焦點)之間的區別。Document.activeElement 返回具有焦點的元素。
規範
| 規範 |
|---|
| Selection API # dom-window-getselection |
瀏覽器相容性
載入中…