Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > TWebBrowser - пути к картинкам


Автор: Error202 13.10.2006, 15:48
Можно ли при загрузке страницы с сервера поменять пути к картинка и грузить уже картинки не с сервера, а с локального компьютера...?

Например если в загруженном в TWebBrowser html есть пути, начинающиеся с /pics/..., то заменять их на file:///.../pics/... , а только потом грузить уже сами картинки по нувым путям.

Автор: _hunter 13.10.2006, 16:07
лови событие BeforeNavigate2
или просто бери у браузера HTML и там меняй ссылки

Автор: Error202 13.10.2006, 16:19
Если я просто возьму HTML и поменяю ссылки, то картинки по старым ссылкам успеют загрузиться?

Автор: _hunter 13.10.2006, 16:28
не должны...

Автор: Error202 13.10.2006, 16:51
А посему после изменений страница TWebBrowser'a очищается?

Автор: _hunter 13.10.2006, 17:06
с какой стати?

Автор: Error202 13.10.2006, 17:11
Ну врдебы все нормально, страница грзит картинки локально... но потом шлеп! и чистое белое окошко... smile


Руки у меня точно кривые и знаний маловато smile
Решил попробовать на событии OnDocumentComplete

Код

...
 s:=((pDisp as IWebBrowser).Document as IHtmlDocument2).body.innerHTML;
 //showmessage(s);
 ((pDisp as IWebBrowser).Document as IHtmlDocument2).body.innerHTML:=Replace(s, 'pics', 'file:///c:/Program Files/Delphi7SE/Projects/g1/skins/default/pics');
...


В s вставляется исходник страницы

Автор: December 13.10.2006, 17:12
Цитата(_hunter @  13.10.2006,  16:07 Найти цитируемый пост)
лови событие BeforeNavigate2

И? Чем это может помочь?
Цитата(_hunter @  13.10.2006,  16:07 Найти цитируемый пост)
или просто бери у браузера HTML и там меняй ссылки

Это совсем неуниверсальное решение. Как насчёт css и js-generated объектов?
Цитата(Error202 @  13.10.2006,  16:19 Найти цитируемый пост)
Если я просто возьму HTML и поменяю ссылки, то картинки по старым ссылкам успеют загрузиться? 

Часть - успеет. Я пробовал.

Тема уже обсуждалась. Единственное надёжное решение - проксирование, обработка HTML до попадания в TWebBrowser.

Автор: _hunter 13.10.2006, 17:31
Цитата(December @  13.10.2006,  17:12 Найти цитируемый пост)
И? Чем это может помочь?

думал там можно просто подменить адрес (он типа ByRef передается...)

Автор: Girder 13.10.2006, 23:55
 smile 

Автор: December 14.10.2006, 21:36
Girder, cool smile smile 

Автор: Error202 16.10.2006, 09:11
Girder, Спасибо!!!

Автор: Error202 16.10.2006, 15:57
Вообще интересный исходник... Вопрос только в том, как обработать картинки, если на странице есть фреймы?

Автор: Error202 16.10.2006, 16:20
Всем спасибо! разобрался...
Webbrowser1.OleObject.Document.Frames.item(i).Document, где i - номер фрейма

Автор: December 16.10.2006, 18:34
Цитата(Error202 @  16.10.2006,  16:20 Найти цитируемый пост)
Webbrowser1.OleObject.Document.Frames.item(i).Document, где i - номер фрейма 

...в случае, когда все фреймы в одном домене

Автор: Girder 16.10.2006, 18:49
Цитата(Error202 @  16.10.2006,  17:20 Найти цитируемый пост)
Всем спасибо! разобрался...

Енто просто показано... как делать. А уж все остальное придеться писать самому smile

Автор: Delphist 4.10.2007, 13:23
Цитата(Girder @  14.10.2006,  00:55 Найти цитируемый пост)
   
Присоединённый файл ( Кол-во скачиваний: 38 ) 
  Girder.ZIP 9,05 Kb

Данный код позволяет изменять путь к картинкам только в WebBrowser'e, т.е. если я в контекстном меню выберу просмотр html-кода, то пути отображаются старые. Как заставить менять путь и в исходнике html, или помогите написать парсер, который позволял бы, отыскивать пути к картинкам, скриптам и прочее и менять их на свой.
Код

var
 i: integer;
begin
 if Assigned(WebBrowser.Document) then
 try
   for i := 0 to WebBrowser.OleObject.Document.Images.Length - 1 do
     WebBrowser.OleObject.Document.Images.Item(i).Src := ChangeFilePath(
       WebBrowser.OleObject.Document.Images.Item(i).Src,  NewPath);
 except
 end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)