Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

Изменение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.014 c
3-1161844347
Alexey123
2006-10-26 10:32
2007.01.14
Скроллинги в DBGrid


3-1162187801
vlgrig1961
2006-10-30 08:56
2007.01.14
Есть ли в SQL для парадокса что-то вроде To_Char конверт из цифр


2-1166882884
kroner
2006-12-23 17:08
2007.01.14
дочерняя форма в dll


2-1166926153
Drashka
2006-12-24 05:09
2007.01.14
Сравнение с типом данных Variant


3-1161929493
FrostFS
2006-10-27 10:11
2007.01.14
макросы Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский