2010-05-12 70 views
0

我正在編寫一些代碼來查找用戶在contenteditable div中的選擇,我從this quirksmode article獲取我的代碼。Javascript函數返回函數代碼行或「{[native code]},」我做錯了什麼?

function findSelection(){ 
    var userSelection; 
    if (window.getSelection) {userSelection = window.getSelection;} 
    else if (document.selection){userSelection = document.selection.createRange();} // For microsoft 
    if (userSelection.text){return userSelection.text} //for Microsoft 
    else {return userSelection} 
    } 

我在Chrome和Firefox測試它,如果我的功能或警報範圍內做一個alert(userSelection)(findSelection();)功能之外,它返回function getSelection() {[native code]}。如果我做console.log(findSelection();)它給了我getSelection()。有什麼我做錯了嗎?

回答

1

它更改爲

如果(window.getSelection){userSelection = window.getSelection();}

getSelection()

+0

AR,只是一個錯字,謝謝,我會更加小心下一次。 – DavidR 2010-05-12 16:30:51

2

getSelection是一個函數...你需要執行它來獲得選擇?

if (window.getSelection) {userSelection = window.getSelection();} 
0

這是爲了獲取文本的選擇。即使修正了錯字,您也會遇到不一致的行爲:IE將選擇的文本作爲字符串返回,而其他瀏覽器將返回Selection對象,只有在調用toString()方法時,該對象纔會爲您提供選擇文本字符串。

下會更好:

function getSelectionText(){ 
    if (window.getSelection) { 
     return "" + window.getSelection(); 
    } else if (document.selection && document.selection.createRange) { 
     return document.selection.createRange().text; 
    } 
} 
相關問題