TWebbrowser

5 отговора 204 прегледа
#1

TWebbrowser

Здравейте!

Имам следната ситуация.
Използвам TEmbeddedWB за визуализация на html документ. Съдържанието на документа се генерира динамично. Проблема е в това че времето за генериране на някои от документите е доста голямо и при визуализация се получава дразнещо забяване. Та въпроса ми е дали има възможност за динамично подаване на генерирания html на контролата - така че да се покаже първата страница от документа веднага а останалата част да продължи да се зарежда в "background" режим.

Благодаря предварително.

Отговор
в отговор на tpt #2

Re: TWebbrowser

Елементарно и ефектно решение е да се ползват два фрейма.
1) Стартира се страница с два фрейма - фрейм1 и фрейм2, като фрейм2 е скрит, а Фрейм 1 се зарежда с началната страница
2) Във Фрейм2 се зарежда целия документ
3) Когато се зареди целия документ се скрива Фрейм1 и се показва Фрейм2

чети и дишай по-леко
Отговор
в отговор на Pechenia #3

Re: TWebbrowser

Благодаря за мнението, но май това няма да ми свърши работа.

Проблема е че в този случай при показване на малка част от документа, клиента ще вижда само нея докато не се зареди целия документ във втория фрейм. А аз бих искал в браузъра при скролиране да се вижда как докумета се "пълни" в момента.
Отделен е въпроса че при експериментите бях пробвал и такова нещо - но така и не можаш да накарам браузъра да ми покаже едновременно 2 фрейма(в интерс на истината не съм се пънал много :) ). Не съм пробвал ако единия е невидим.

Може би трябва да добавя че изпозвам namespacehandler и от там подавам съдържанието и картиниките.

Идеята е браузъра да показва текущо подадения html, като в същото време се подава остатъка от html страницата.

Отговор
в отговор на tpt #4

Re: TWebbrowser

Здрасти. Ами мога да ти препоръчам да отидеш на сайта на тори ([линк] в момента май не бачка, но обещават да го пуснат скоро) и да поразгледаш трикове/демонстрации има страшно много хитринки за тоя комопонент, за които не съм си и представял че съществуват. Почти 99% съм сигурен че от там ще намериш нужната ти информация.
Успех!

Отговор
в отговор на tpt #5

Re: TWebbrowser

Ако нещата са локални, тогава просто пълни съдържанието на TWebBrowser-а чрез:

TWebBroser.OleObject.document.write ('111');
TWebBroser.OleObject.document.write ('222');
...

чети и дишай по-леко
Отговор
в отговор на tpt #6

Re: TWebbrowser

Благодаря за мненията, бяха ми от голяма полза.

Оправих се с проблема - използвах функцията
insertAdjacentHTML('BeforeEnd', text); на HTMBody и малко application.processmessages ;) .
Стана точно както си го представях :).

Благодря още веднъж.

Отговор