Функции Javascript возвращают строки кода функции или «{[native code]}», что я делаю не так? - PullRequest
0 голосов
/ 12 мая 2010

Я пишу некоторый код, чтобы найти выбор пользователя в contenteditable div, я беру код из этой статьи о причудливом режиме .

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(). Что-то я не так сделал?

Ответы [ 3 ]

2 голосов
/ 12 мая 2010

getSelection - это функция ... вам нужно выполнить ее, чтобы получить выбор?

if (window.getSelection) {userSelection = window.getSelection();}
1 голос
/ 12 мая 2010

Измените его на

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

(getSelection())

0 голосов
/ 13 мая 2010

Это чтобы получить текст выбора. Даже с исправленной опечаткой у вас непоследовательное поведение: IE возвращает текст выделения в виде строки, в то время как другие браузеры возвращают объект Selection, который выдаст вам текстовую строку выбора только при вызове метода toString().

Лучше было бы следующее:

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