Как получить выделение HTML и выделение родительского? - PullRequest
3 голосов
/ 10 мая 2009

Несколько лет назад я добавил «умное цитирование» на веб-форум. По сути, пользователь выбирает часть в предыдущем разговоре и нажимает кнопку, чтобы процитировать ее. Скрипт получает HTML-код цитаты и поднимается вверх по дереву DOM, чтобы выяснить, кто это сказал.

Я мог сделать это только для IE, хотя помню, что очень старался. Но тогда не было никакого stackoverflow.com и Firefox не был таким зрелым. Полагаю, что сейчас делать это в Firefox так же просто. Вот ключевая часть кода.

range2Copy = frameDoc.selection.createRange(); 
html2Copy = range2Copy.htmlText; 

el = range2Copy.parentElement();

// go up the HTML tree until post row node (id=postrowNNNN)

while (el.nodeName != 'BODY' &&
        !el.id.match(/postrow/)) {

    el = el.parentNode;
}

Элемент frameDoc содержит предыдущий поток, в котором пользователь выделяет текст. Если это имеет слишком мало смысла, см. Весь код здесь . Это плагин для FCKeditor.

1 Ответ

5 голосов
/ 10 мая 2009

ОК, я пытался запустить ваш код в Firefox, и он не работал, это модифицированная версия, которая работала:

var selection = window.getSelection(); 
var node = selection.anchorNode;

while (node.nodeName != 'BODY' && !node.id.match(/postrow/)){
    node = node.parentNode;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...