5

ハイライトされたテキストを操作するFirefox拡張機能に取り組んでいます。

スタンドアロンページでは、選択したテキストを次のように取得できます。

selectedText = document.selection?document.selection.createRange().text;

次に、問題のテキスト領域で文字列操作を使用して、選択したテキストを操作します。残念ながら、ユーザーが選択したテキストがどこにあるかわからないため、プラグインではそれは不可能です。

テキストが選択されている要素の名前を取得したり、要素の名前なしで選択されたテキストを変更したりする方法はありますか?

4

2 に答える 2

4
selectedText = content.getSelection().toString();
于 2009-03-21T23:50:26.910 に答える
0

ユーザー選択から範囲オブジェクトを取得する必要があります。

var userSelection;
if (window.getSelection)
    userSelection = window.getSelection();
else if (document.selection)    // should come last; Opera!
    userSelection = document.selection.createRange();

var rangeObject = getRangeObject(userSelection);

..。

function getRangeObject(selectionObject) {
    if (selectionObject.getRangeAt)
        return selectionObject.getRangeAt(0);
    else { // Safari!
        var range = document.createRange();
        range.setStart(selectionObject.anchorNode, selectionObject.anchorOffset);
        range.setEnd(selectionObject.focusNode, selectionObject.focusOffset);
        return range;
    }
}

...

Rangeオブジェクトには、開始コンテナノードと終了コンテナノードなどがあります。

詳細については、Quirksmodeのこちらとw3.orgのこちらをご覧ください。

于 2009-02-06T06:57:45.473 に答える