Как получить текст выделения по нескольким элементам HTML? - PullRequest
4 голосов
/ 24 июня 2011

Вот мой вопрос:

Когда пользователь делает выбор в статье или в области редактирования виджета редактора WYSWYG, выбор может охватывать несколько элементов, как якоря, изображения, теги span ... даже элементы уровня блока (но в моей задаче нет таблицы).

Я знаю, как извлечь объект Range из выделения, но не смог найти надежного решения для получения текстового содержимого объекта Range.

Я не ищу решения для IE (его объект TextRange имеет свойство .text).

Спасибо!

Ответы [ 2 ]

4 голосов
/ 24 июня 2011

Вы смотрели статью quirksmode на Range?

На основе этой статьи вы можете создать такой метод:

function getRangeText() {

    var userSelection;
    if (window.getSelection) {
        userSelection = window.getSelection();
    } else if (document.selection) {
        userSelection = document.selection.createRange();
    }
    var selectedText = userSelection;
    if (userSelection.text) {
        selectedText = userSelection.text;
    }
    return selectedText;
}

Я проверял это в FF5, Opera 11, Safari на Mac, а также в IE6 и IE7. Это стоит протестировать в других браузерах IE, но я думаю, что это работает и в них.

2 голосов
/ 28 июня 2011

Возвращает строку и работает во всех основных браузерах:

function getSelectionText() {
    var text = ""
    if (window.getSelection) {
        text = window.getSelection().toString();
    } else if (document.selection && document.selection.type == "Text") {
        text = document.selection.createRange().text;
    }
    return text;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...