1

私はcontenteditabledivでユーザー選択を見つけるためにいくつかのコードを書いています、私はこのquirksmodeの記事から私のコードを取っています。

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)ますが、関数内または関数外でalert(findSelection();)を実行すると、が返されますfunction getSelection() {[native code]}。私がそうするならば、console.log(findSelection();)それは私に与えますgetSelection()。私が間違ったことはありますか?

4

3 に答える 3

3

getSelectionは関数です...選択を取得するには、それを実行する必要がありますか?

if (window.getSelection) {userSelection = window.getSelection();}
于 2010-05-12T16:13:40.950 に答える
1

に変更します

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

getSelection()

于 2010-05-12T16:14:27.283 に答える
0

これは、選択範囲のテキストを取得するためのものです。タイプミスを修正しても、動作に一貫性がありません。IEは選択範囲のテキストを文字列として返しますが、他のブラウザは、メソッドが呼び出されSelectionたときにのみ選択範囲のテキスト文字列を提供するオブジェクトを返します。toString()

次の方が良いでしょう:

function getSelectionText(){
    if (window.getSelection) {
        return "" + window.getSelection();
    } else if (document.selection && document.selection.createRange) {
        return document.selection.createRange().text;
    }
}
于 2010-05-13T08:59:12.083 に答える