1

新しいリアルタイム テキスト コラボレーション サービス Firepadを使用しています。

getSelectionユーザーが選択したボックス内のテキストに対してJavaScript メソッドを使用したいと考えています。

ただし、何らかの理由でコードが機能しません。

私のJavaScript:

function myFunction()
{
    alert(window.getSelection());
}

HTML:

<button onclick="myFunction();">Get Selected Text in Firepad</button>

私のテストサイト

4

3 に答える 3

2

プラグインを見ると、FirePad はtextarea.

別の SO 投稿の回答によるとtextareas、他のノードと同じ選択範囲を使用していないようです。

受け入れられた答えは、次のように説明しています。

textarea ノードでさらに奇妙なことが起こっています。私の記憶が正しければ、IE で選択すると他のノードと同じように動作しますが、他のブラウザーでは、ノードの .selectionEnd プロパティと .selectionStart プロパティを介して公開される独立した選択範囲があります。

最も投票数の多い回答が解決策を示しています。

このソリューションでは、textareaノードへの参照を直接使用し、要素のプロパティselectionEndselectionStartプロパティを使用してそこから選択範囲を取得します。これは次のようになります。

function myFunction() {
    var e = document.getElementById('thearea');

    //Mozilla and DOM 3.0
    if ('selectionStart' in e) {
        var l = e.selectionEnd - e.selectionStart;

        var start = e.selectionStart,
            end = e.selectionEnd,
            length = l,
            text = e.value.substr(e.selectionStart, l);

        alert(text);
    }
}

デモ-selectionStartandselectionEndtextarea


これが最近のすべてのブラウザーで同じかどうかはわかりませんが、上記のコードとリンクされた SO の追加情報が、目的の結果を得るのに役立つことを願っています。

于 2013-04-26T15:36:36.083 に答える