Добрый день.

По onLoad страницы надо выполнить regexp с заменами.

Выделить код

Код:

alert(doc.body.innerHTML)

Показывает только часть страницы.

Подумал, может алертом обрезается и ...

Выделить код

Код:

alert(doc.body.innerHTML.length)

Показывает 110000(с мелочью), а вся страница 300000+ символов.

Подумал что может какой-нибудь ограничение длины и пошел на страничку поменьше (80000+), длину вернул всего 25000+.

Скажите, пожалуйста, в чем мой косяк ?
Как мне получить всю страницу?

chikanok
Используйте XPath - он работает непосредственно на DOM-структуре документа. И это оптимальнее с т.з. производительности.

hydrolizer пишет

chikanok
Используйте XPath - он работает непосредственно на DOM-структуре документа. И это оптимальнее с т.з. производительности.

Xpath не подходит, я не знаю где и сколько будет элементов под замену.
Нужен именно текстовый поиск по HTML коду.

Может попробовать через интерфейс nsIDOMSerializer? У него есть метод SerializeToString.

Выделить код

Код:

var s = new XMLSerializer();
var d = document;
var str = s.serializeToString(d);
alert(str);

Что-то типа бага 644196, по-видимому.

FireBug в тоже время показывает полный innerHTML.
Как он его получает?

26-04-2011 15:32:29
Вот весь мой код связанный с этим

Выделить код

Код:

....
gBrowser.addEventListener("load", OO.OnDocumentLoad, true);
....
    OnDocumentLoad:function(event)
    {
        if (event.originalTarget instanceof HTMLDocument) 
        {
            if (!event.originalTarget.defaultView.frameElement) 
            {
                var doc = event.originalTarget.defaultView.document;
                                                        doc.body.innerHTML=doc.body.innerHTML.replace(rx,form);
            }
        }
    },
...
chikanok пишет

Xpath не подходит, я не знаю где и сколько будет элементов под замену.

Ну и что? У вас же есть критерии для поиска? Вот сколько элементов будет удовлетворять этим критериям, столько XPath (соответствующим образом составленный, разумеется) и найдет. А использовать текстовый поиск в данном случае - это примерно как вместо того, чтобы использовать getElementById() - брать тот же innerHTML в виде plain text, и в нем искать с помощью indexOf("id=\"myElementId\"").

hydrolizer пишет
chikanok пишет

Xpath не подходит, я не знаю где и сколько будет элементов под замену.

Ну и что? У вас же есть критерии для поиска? Вот сколько элементов будет удовлетворять этим критериям, столько XPath (соответствующим образом составленный, разумеется) и найдет. А использовать текстовый поиск в данном случае - это примерно как вместо того, чтобы использовать getElementById() - брать тот же innerHTML в виде plain text, и в нем искать с помощью indexOf("id=\"myElementId\"").

Улыбнуло.

Заказчикам примерно тоже говорил, но нет.


Вообщем незнаю что я сделал, но оно заработало :)
Тему можно закрывать.