Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Изменение HTML кода, перед его загрузкой в TWebBrowser   Найти похожие ветки 

 
DelphiN! ©   (2006-08-09 13:55) [0]

Необходимо в самописном браузере заменить некоторе слова в HTML коде, загружаемом с WEB сервера, ну а далее уже измененный HTML отобразить в TWebBrowser-e


 
Сергей М. ©   (2006-08-09 14:32) [1]

Вообще-то это обязанности прокси, а не клиента ..


 
DelphiN! ©   (2006-08-09 14:36) [2]

> [1] Сергей М. ©   (09.08.06 14:32)


Ну а мне нужно со стороны клиента ...


 
Сергей М. ©   (2006-08-09 14:48) [3]

Что мешает встроить прокси в клиента ?


 
DiamondShark ©   (2006-08-09 16:16) [4]

Прокси и сети здесь совершенно ни при чём.

TWebBrowser -- оболочка для Microsoft Web Browser Control (компонент Internet Explorer).
Предоставляет собственные механизмы расширения и программирования.
http://msdn.microsoft.com/workshop/browser/prog_browser_node_entry.asp
Большей частью позволяющие вообще абстрагироваться от сетей, проксей, и вообще от источника контента.

В частности, поставленная задача (подмены контента "на лету") решается регистрацией Pluggable MIME Filter
http://msdn.microsoft.com/workshop/networking/pluggable/pluggable.asp

Есть пример реализации фильтра для преобразования контента.
http://download.microsoft.com/download/ie55/sample05/1.1/WIN98Me/EN-US//MIMEfilt.exe

На Ц++, правда ;) но разобраться можно, тем более, что по коду можно понять некоторые вещи, не очень внятно описанные в документации.
В примере показан постоянный MIME Filter, но ничто не мешает регистрировать временные фильтры для своего приложения через IInternetSession. Реализация фильтра та же самая.


 
programania ©   (2006-08-09 22:36) [5]

http://programania.com/namespace.zip      91кб
пример как перехватывать все http запросы webbrowser в Delphi5
и отдавать свое


 
SergP ©   (2006-08-10 14:55) [6]

> [0] DelphiN! ©   (09.08.06 13:55)
> Необходимо в самописном браузере заменить некоторе слова
> в HTML коде, загружаемом с WEB сервера, ну а далее уже измененный
> HTML отобразить в TWebBrowser-e


Так браузер таки самописный или все-таки TWebBrowser?


 
DiamondShark ©   (2006-08-11 11:24) [7]


> programania ©   (09.08.06 22:36) [5]
> http://programania.com/namespace.zip      91кб
> пример как перехватывать все http запросы webbrowser в Delphi5
> и отдавать свое

Неадекват.

Зачем http перехватывать?
А если загружаеться с file:// или (*крестиццо*) с ms-help:// ?
А вот MIME-фильтры как раз индифферентны к источнику контента, они с абстракным потоком работают.


 
programania ©   (2006-08-12 22:38) [8]

>DiamondShark ©   (11.08.06 11:24) [7]
>Зачем http перехватывать?

Приведите ссылку где загрузка HTML кода не по http
интересно попробовать

>DelphiN! ©   (09.08.06 13:55)  
>Изменение HTML кода, перед его загрузкой в TWebBrowser

Возможно проще обрабатывать WebBrowser1BeforeNavigate2
ставить cancel:=true; загружать URL самостоятельно
изменять что нужно и записывать в WebBrowser
Вот только WebBrowser вызывает BeforeNavigate2
не для всего что загружает.


 
Ketmar ©   (2006-08-12 22:51) [9]

> [8] programania ©   (12.08.06 22:38)
res://что-то
file://что-то
ms-help://что-то
my-super-custom-protocol://что-то

хватит, или ещё сочинять?


 
programania ©   (2006-08-13 03:17) [10]

>Ketmar ©   (12.08.06 22:51) [9]

не надо сочинять
нужен реальный адрес чтобы попробовать
укажите вместо "что-то" нормальный адрес HTML кода в интернете


 
Ketmar ©   (2006-08-13 04:21) [11]

> [10] programania ©   (13.08.06 03:17)
а при чём тут "интернет"? в [8] ни о какой "интернете" речи не шло.


 
DiamondShark ©   (2006-08-13 13:21) [12]


> programania ©


Интернет тут совсем ни при чём. Речь идёт о WebBrowser, а ему абсолютно фиолетово, откуда именно загружается контент, потому что архитектура компонентная.
Странно, что вы приводите пример pluggable-protocol, но так, похоже, и не поняли, в чём там соль.

Пользоваться надо адекватными средствами. Для задачи "заменить некоторе слова в HTML коде" существует механизм подключаемых фильтров.
Зачем городить костыли, если есть возможность работать на уровне абстрактного потока?


 
programania ©   (2006-08-13 22:32) [13]

>Ketmar ©   (13.08.06 04:21) [11]
>а при чём тут "интернет"? в [8] ни о какой "интернете" речи не шло.

Интернет просто как наиболее простой пример и чтоб убедится что там такого нет
однако может все же скажите любой полный адрес?

>DiamondShark ©   (13.08.06 13:21) [12]
>Странно, что вы приводите пример pluggable-protocol

В этом примере показано как перехватывать чтение файлов по протоколу http,
а если в нем добавить строку например такую:
InternetSession.RegisterNameSpace(Factory, Class_OurNSHandler, "ftp", 0, nil, 0);
то будет перехват еще и ftp, аналогично и других какие надо
Что еще нужно? Что тут странного?

>Зачем городить костыли, если есть возможность работать на уровне абстрактного потока?

Зачем городить кучу умных слов?
Приведите наконец лучший код на Delphi


 
DiamondShark ©   (2006-08-14 00:00) [14]


> programania ©   (13.08.06 22:32) [13]

Вопрос ещё раз перечитайте.


 
programania ©   (2006-08-14 02:47) [15]

>DiamondShark ©   (14.08.06 00:00) [14]
>Вопрос ещё раз перечитайте.

Перечитал:
>Необходимо в самописном браузере заменить некоторе слова в HTML коде, загружаемом с WEB сервера, ну а далее уже измененный HTML отобразить в TWebBrowser-e

Я как раз это и сделал указаным в [5] способом в своем самописном броузере
http://programania.com/si.htm
и за 1.5 года, накачал им 14078 страниц,
но нигде в них не нашел загрузку html не http



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.067 c
15-1166373226
Tolik
2006-12-17 19:33
2007.01.14
Защита структур и алгоритмов


15-1166559070
tesseract
2006-12-19 23:11
2007.01.14
давно не было моего ежемесячного дайджеста :-) :


15-1166974212
volodiya
2006-12-24 18:30
2007.01.14
!!!Помогите пожалуйста!!!


2-1167045529
Slimer
2006-12-25 14:18
2007.01.14
Фильтр БД sting&integer


15-1166895855
Дмитрий Игоревич
2006-12-23 20:44
2007.01.14
Delphi "рухнула"