Ciao a tutti, sto utilizzando il TWebBrowser per eseguire in automatico dei comandi su una mia pagina web. Oltre alla "Navigate", uso il document per eseguire comandi javascript e per fare il download dei contenuti della pagina.

Per far questo però, ho bisogno di sapere con esattezza quando il WebBrowser è occupato, nel senso se sta caricando la pagina, o c'è ancora qualche contenuto che ancora non è pronto (tipo alcune immagini, che si caricano dopo un po' che è pronto il document perchè sono un po' pesanti).

Se eseguo gli script javascript sulla pagina NON pronta completamente, si generano errori e la procedura fallisce.

Uso di continuo questa procedura:
codice:
function TForm3.WaitWB(timeout: Integer): integer;
begin

  while (WB.Busy) or (WB.ReadyState<>READYSTATE_COMPLETE) do Application.ProcessMessages;
 
  Sleep(1000);
Result := 0;
end;
che viene eseguita tra le varie esecuzioni degli script (che ovviamente includono anche dei submit sui form).

Spesso funziona, ma non sempre... A volte capita che il browser SEMBRA pronto, ma poi qualche script fallisce perchè non trova tutti gli elementi sulla pagina (che evidentemente non è vero che era pronta!)

Mi sapreste suggerire un metodo più efficace che funzioni al 100% ??


Grazie grazie grazie