2010-05-12 4 views
0

Я пишу код, чтобы найти выбор пользователя в контентном 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

соток, просто опечатка, спасибо, я буду более осторожным в следующий раз. – DavidR

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; 
    } 
}