2

ユーザーがページ上のテキストを強調表示/選択したかどうかを最初に確認する必要があるJavaScript関数を作成しています。これが機能するはずだとオンラインで読みました:

if ( typeof window.getSelection() != "undefined" ) {
    var x = window.getSelection().toString();
}
else {
    //nothing is selected, so use default value
    var x = "default value";
}

しかし、何も選択されていない場合でも window.getSelection() がオブジェクトを返すため、これは機能しませんでした。

if ( typeof window.getSelection().toString() !== "" ) {
    var x = window.getSelection().toString();
}
else {
    //nothing is selected, so use default value
    var x = "default value";
}

ただし、window.getSelection().toString() は空の文字列を返しますが、デフォルト値ではなくその空の文字列を引き続き使用します。

最後に、if ( window.getSelection() )どちらも機能しませんでした。

何かが選択されているかどうかを知るにはどうすればよいですか?

4

1 に答える 1

4

これは動作します: http://jsfiddle.net/tknkh9xa/1/

(window.getSelection().toString() != "")

あなたの問題は、空の文字列ではない...typeofの結果をチェックしていたことtoString()です(「文字列」になります)。

また、空の文字列は偽の値であるため、次のようにすることもできます
if(window.getSelection().toString())

于 2013-06-10T15:59:17.407 に答える