Несколько лет назад я добавил «умное цитирование» на веб-форум. По сути, пользователь выбирает часть в предыдущем разговоре и нажимает кнопку, чтобы процитировать ее. Скрипт получает 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.