Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TWebBrowser портит ссылки в коде страницы, TWebBrowser портит ссылки в коде страниц 
:(
    Опции темы
Pcrepair
Дата 25.2.2012, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Добрый день
есть общеизвестный код вывода закачанного кода ХТМЛ-страницы при помощи TWebBrowser (RAD2010)

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  URL, Flags, TargetFrameName, PostData, Headers: Olevariant;
  MS : String;
begin
  URL := Edit1.Text;
  Flags := 0;
  TargetFrameName := 0;
  Postdata := 0;
  Headers := 0;
  WebBrowser1.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
  repeat
    Application.ProcessMessages;
  until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
  if WebBrowser1.Document <> nil then
  MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;
  begin
      Memo1.Clear;
      Memo1.Text := MS;
    end;
end;
initialization
Set8087CW($133F);


Код позволяет вывести в МЕМО код страницы после обработки ЖАБА-скриптов. однако при этом искажаются ссылки.
Код страницы, закачанный idHTTP (только ссылки)
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти&nbsp;в&nbsp;почту</a>
<a href="http://www.yandex.ru" onclick="c(this,17,1083)">Яндекс</a>
<a href="http://www.artlebedev.ru" onclick="c(this,17,1084)">Студия Артемия&nbsp;Лебедева</a>
Код страницы, закачанный TWebBrowser
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти&nbsp;в&nbsp;почту</A>
<A onclick=c(this,17,1083) href="http://www.yandex.ru">Яндекс</A>»</P>
<A onclick=c(this,17,1084) href="http://www.artlebedev.ru">Студия Артемия&nbsp;Лебедева</A>
Вопрос:
что нужно изменить в коде, чтобы ссылки не портились, конечно если это возможно
Всем ответившим спасибо.
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Чучмек
Дата 25.2.2012, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



А что не так?


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Чучмек
Дата 25.2.2012, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Если нужен исходный код страницы -
Код


var
 prsi: IPersistStreamInit;
 ms:tmemorystream;  //tfilestream //tstringstream
 sa:TStreamAdapter;
 ch:char;


begin
ms:=tmemorystream.Create;
sa:=TStreamAdapter.Create(ms);


prsi:=  WebBrowser1.Document as  IPersistStreamInit;
ms.Seek(0,0);
prsi.Save(sa as istream,true);
ch:=#0;
ms.Write(ch,sizeof(ch));

memo1.text:=pchar(ms.Memory);



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Pcrepair
Дата 25.2.2012, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



этот код как то стыкуется с
Код

WebBrowser1.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
  repeat
    Application.ProcessMessages;
  until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
  if WebBrowser1.Document <> nil then

он сможет заменить
Код

MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;

--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Чучмек
Дата 25.2.2012, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(Pcrepair @  25.2.2012,  22:36 Найти цитируемый пост)
этот код как то стыкуется с

Нет WebBrowser1.Document нет и IPersistStreamInit

Цитата(Pcrepair @  25.2.2012,  22:36 Найти цитируемый пост)
он сможет заменить

Он сможет заменить Правая кнопка -> исходный код страницы
Он не даст того, что накуролесили скрипты

Добавлено через 4 минуты и 28 секунд
Цитата(Pcrepair @  25.2.2012,  22:36 Найти цитируемый пост)
 repeat
    Application.ProcessMessages;
  until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;

У TWebBrowser есть очень полезные события - OnDocumentComplete, OnDownloadComplete



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Pcrepair
Дата 26.2.2012, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



события очень,  очень полезные
только нестабильно определяют момент окончания загрузки
а 
Код

until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;

определяет однозначно
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0708 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.