Как вы управляете выделенным текстом через расширение Firefox - PullRequest
5 голосов
/ 06 февраля 2009

Я работаю над расширением Firefox , которое будет манипулировать выделенным текстом.

На отдельной странице я могу получить выделенный текст с помощью:

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

Тогда я бы манипулировал выделенным текстом с помощью строковых операций с рассматриваемой текстовой областью. К сожалению, это невозможно для плагина, так как я не знаю, где находится выбранный пользователем текст.

Есть ли способ получить имя элемента, в котором выделен текст, или изменить выделенный текст без имени элемента?

Ответы [ 2 ]

4 голосов
/ 22 марта 2009
selectedText = content.getSelection().toString();
0 голосов
/ 06 февраля 2009

вам нужно получить объект диапазона из вашего выбора пользователя:

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 здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...