>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >range для всего документа http://forum.mozilla-russia.org/viewtopic.php?id=8957 |
cesspit > 14-03-2006 14:53:27 |
мне нужно получить текст всего документа в плане строку содержащую весь текст присутствующий на странице, не HTML, т.е. без тегов для набора своего рода статистики по встречающимся на странице словам. Есть вроде интерфейс nsIDOMDocumentRange у которого можно попросить range кот-й потом toString и вроде то что мне надо. Но не знаю как получить этот самый nsIDOMDocumentRange, или может есть другие пути? |
Anton > 14-03-2006 15:50:32 |
Можно так: Выделить код Код:function getTopWin () { var windowManager = Components. classes ['@mozilla.org/appshell/window-mediator;1']. getService(); var windowManagerInterface = windowManager. QueryInterface (Components. interfaces. nsIWindowMediator); var topWindowOfType = windowManagerInterface. getMostRecentWindow ("navigator:browser"); if (topWindowOfType) { return topWindowOfType; } return null; } function getContent () { var cont = getTopWin (). getBrowser (). contentDocument; var c2 = cont; try { cont = new XPCNativeWrapper (cont). wrappedJSObject; } catch(e) {} if (!cont) cont = c2; return cont; } print (getContent (). firstChild. nextSibling. textContent); |
cesspit > 14-03-2006 16:37:52 |
Anton пишет
не работает: TypeError: getContent().firstChild.nextSibling has no properties |
Anton > 14-03-2006 16:44:47 |
cesspit пишет
Поясню: getContent().firstChild.nextSibling - это HTML документ. Можете получить его другим каким-нибудь способом. И ещё: в textContent попадают комментарии (<!-- ... -->). |
cesspit > 14-03-2006 17:10:01 |
Anton пишет
спасибо, ключевой момент кот-й я вынес - св-во textContent, про которое я не знал. Чтобы не тащить за собой комментарии (и скрипты вдобавок ), мне тогда будет удобнее брать textContent у content.document.body. |