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

Вниз

TWebBrowser   Найти похожие ветки 

 
Кабан ©   (2007-02-22 11:04) [0]

Пытаюсь загрузить страницу в WebBrowser следующим образом:
procedure TForm1.LoadData(FileName : String);
var
 MS      : TStringStream;
 HTML    : String;
begin
... // Загружаю файл в строку HTML

MS := TStringStream.Create(HTML);
try
 (Webbrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(MS));
 finally
 MS.Free;
 end
end;

В большинстве случаев файл загружается нормально, но иногда при внесении незначительных изменений в
браузере отображается исходный код страницы. Изменения могут быть совершенно незначительными, например,
иногда достаточно добавить, допустим, в тэг "td" строку align="center".

При этом, при попытке загрузить страницу следующим образом:

WebBrowser.Navigate(Path+"Index.html");

Все отображается нормально.


 
Johnmen ©   (2007-02-22 23:03) [1]

Боже, кругом одни извращенцы...:)
HTMLFileName : OleVariant;
HTMLFileName:="бла-бла-бла.html";
WebBrowser.Navigate2(HTMLFileName);


 
VeLeS ©   (2007-02-23 01:20) [2]

Можно и по другому

HTMLFileName : String;
HTMLFileName:="бла-бла-бла.html";
WebBrowser.Navigate(WideString(HTMLFileName));


 
Кабан ©   (2007-02-26 10:35) [3]

Вы вопрос читали?
>>При этом, при попытке загрузить страницу следующим образом:
>>WebBrowser.Navigate(Path+"Index.html");
>>Все отображается нормально.

Очевидно, что все эти извращения при загрузке требуются для того, чтобы изменять некоторые данные, т.е. загружается шаблон, затем в разные места вставляется данные из БД.

Вопрос был не в том, КАК загружать файл, а ПОЧЕМУ при данном способе загрузки возникают проблемы.


 
palva ©   (2007-02-26 13:16) [4]

> ПОЧЕМУ при данном способе загрузки возникают проблемы.
Такая гипотеза:
Потому что работает движок браузера. А он понимает так: раз URL тот же самый, то перезагружать не нужно. Может быть попытаться не Navigate а инициировать Reload?


 
Кабан ©   (2007-02-26 13:40) [5]

Не пойдет, любое изменение шаблона браузер отражает корректно, но при НЕКОТОРЫХ, падает.


 
Ш-К   (2007-02-26 23:39) [6]

Возможно, надо очищать предыдущий документ.

function TEmbeddedWB.InternalLoadDocumentFromStream(const Stream: TStream):
   HRESULT;
var
 PersistStreamInit: IPersistStreamInit;
 StreamAdapter: IStream;
begin
 Result := S_False;
 Assert(Assigned(Document));
 // Get IPersistStreamInit interface on document object
 if Document.QueryInterface(
   IPersistStreamInit, PersistStreamInit
 ) = S_OK then
 begin
   // Clear document
   if PersistStreamInit.InitNew = S_OK then
   begin
     // Get IStream interface on stream
     StreamAdapter:= TStreamAdapter.Create(Stream);
     // Load data from Stream into WebBrowser
    Result := PersistStreamInit.Load(StreamAdapter);
   end;
 end;
end;


 
Кабан ©   (2007-02-27 10:06) [7]

Падает при старте программы, загружается в первые


 
Ш-К   (2007-02-27 17:56) [8]

Ну так проблема совсем в другом была. Изначально Webbrowser.Document не был инициализирован.

 Webbrowser.Go("about:blank");
 Webbrowser.Wait;

procedure TEmbeddedWB.Go(Url: string);
var
  _URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
begin
  _URL := Url;
  Flags := 0;
  TargetFrameName := 0;
  Postdata := 0;
  Headers := 0;
  if (Trim(_URL) <> "") then
     Navigate2(_URL, Flags, TargetFrameName, PostData, Headers);
end;

procedure TEmbeddedWB.Wait;
begin
    while ReadyState <> READYSTATE_COMPLETE do
      Forms.Application.ProcessMessages;
end;


Если  создается в памяти и всегда невидимый, проверяется на READYSTATE_INTERACTIVE


 
Кабан ©   (2007-02-28 09:50) [9]

перед LoadData(FileName : String);
вызываю WebBrowser.Navigate("about:blank");

Видимо и это мимо...


 
Arm79 ©   (2007-02-28 12:31) [10]

Использую эту процедуру для получения текста из HTML
Но в ней процедура загрузки документа в WebBrowser.
Использую около полугода, проблем не наблюдал.

function TfrmMain.GetPlainText(const HTMLStr: string): string;
 var
   sTemp : string;
   Doc   : IHTMLDocument2;
   V     : Variant;
begin
 sTemp   := HTMLStr;

 if wbTransformer.Document = nil
 then begin
   wbTransformer.Navigate("about:blank");
   repeat
     Application.ProcessMessages;
   until wbTransformer.Document <> nil;
 end;

 Doc     := IHTMLDocument2(wbTransformer.Document);
 v       := VarArrayCreate([0, 0], varVariant);
 v[0]    := sTemp;
 Doc.write(PSafeArray(TVarData(v).VArray));
 Doc.close;

 Result := Doc.body.outerText;
end;


 
DiamondShark ©   (2007-02-28 12:57) [11]


> Кабан ©   (28.02.07 09:50) [9]
> перед LoadData(FileName : String);
> вызываю WebBrowser.Navigate("about:blank");
>
> Видимо и это мимо...

Navigate -- процедура асинхронная и немгновенная.
Надо дожидаться пока документ действительно загрузится.


 
Кабан ©   (2007-02-28 13:18) [12]

Вставил задержку, не помогает.

2 Arm79 ©   (28.02.07 12:31) [10]
Спасибо, попробовал этот код, работает.



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

Форум: "Основная";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
2-1175594781
VitV
2007-04-03 14:06
2007.04.22
Random+СУБД


2-1175196193
Riiid
2007-03-29 23:23
2007.04.22
Что в проекте испльзовал?


2-1175512529
Dmitry_177
2007-04-02 15:15
2007.04.22
отобразить все файлы находящиеся в папке


2-1175670718
tnka
2007-04-04 11:11
2007.04.22
DBGrid Rows


4-1164785371
Dmitry_177
2006-11-29 10:29
2007.04.22
Второе меню в окне..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский