мне нужно получить текст всего документа в плане строку содержащую весь текст присутствующий на странице, не HTML, т.е. без тегов для набора своего рода статистики по встречающимся на странице словам.  Есть вроде интерфейс nsIDOMDocumentRange у которого можно попросить range кот-й потом toString и вроде то что мне надо. Но не знаю как получить этот самый nsIDOMDocumentRange, или может есть другие пути?
Спасибо.

Можно так:

Выделить код

Код:

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);
Anton пишет

Можно так:

Выделить код

Код:

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);

не работает:

TypeError: getContent().firstChild.nextSibling has no properties

cesspit пишет

...
не работает:

TypeError: getContent().firstChild.nextSibling has no properties

Поясню: getContent().firstChild.nextSibling - это HTML документ. Можете получить его другим каким-нибудь способом.
Можно ещё уточнить (в моих обозначениях): getContent().firstChild.nextSibling.firstChild.nextSibling - если у документа есть <DOCTYPE>, и разделы <head> и <body>.

И ещё: в textContent попадают комментарии (<!-- ... -->).

Anton пишет
cesspit пишет

...
не работает:

TypeError: getContent().firstChild.nextSibling has no properties

Поясню: getContent().firstChild.nextSibling - это HTML документ. Можете получить его другим каким-нибудь способом.
Можно ещё уточнить (в моих обозначениях): getContent().firstChild.nextSibling.firstChild.nextSibling - если у документа есть <DOCTYPE>, и разделы <head> и <body>.

И ещё: в textContent попадают комментарии (<!-- ... -->).

спасибо, ключевой момент кот-й я вынес - св-во textContent, про которое я не знал. Чтобы не тащить за собой комментарии (и скрипты вдобавок :) ), мне тогда будет удобнее брать textContent у content.document.body.
Спасибо.