PDA

Ver la Versión Completa : Ejecutar repetidamente un script en TWebBrowser


PacoPepe
22-02-2013, 19:33:35
Quiero obtener información de una página web que dispone de un script en JavaScript

Cargo la página con TWebBrowser, monto la URL correcta y la paso con Navigate. Luego genera una tabla HTML y con una función que he encontrado obtengo la información que contiene

¿Pero como hago para saber cuando ha cargado la página totalmente, para pasarle después la URL? y como vuelvo a cargar la segunda vez la página, ya que la primera lo hago con Show, pero la segunda he probado con Update y Refresh pero no he obtenido nada

Un saludo ^\||/

beginner01
23-02-2013, 01:46:58
Hola.


¿Pero como hago para saber cuando ha cargado la página totalmente, para pasarle después la URL?


Para saberlo usa el evento OnDocumentComplete del TWebBrowser. Referencia. (http://docwiki.embarcadero.com/Libraries/XE2/en/SHDocVw.TWebBrowser.OnDocumentComplete)

y como vuelvo a cargar la segunda vez la página, ya que la primera lo hago con Show, pero la segunda he probado con Update y Refresh pero no he obtenido nada

Esto no me queda muy claro. Revisa los eventos del TWebBrowser ,que seguro encontraras lo que necesitas.

PacoPepe
23-02-2013, 13:51:58
Ya lo he conseguido

La función para leer los datos de la tabla HTML es


ovTable:= WebBrowser1.OleObject.Document.all.tags('TABLE').item(0);
try
if not VarIsNull(ovTable) then begin
for i := 1 to (ovTable.Rows.Length - 1) do
for j := 0 to (ovTable.Rows.Item(i).Cells.Length - 1) do begin
try
Memo1.Lines.Append(ovTable.Rows.Item(i).Cells.Item(j).InnerText);
except end;
end;
end;
except end;

Suponiendo que tenemos WebBrowser1 y añadimos los datos leidos al Memo1.
He añadido control de excepciones por si algo falla que siga a la siguiente.

i empieza en 1 porque en mi caso la tabla tiene cabecera y no la necesito, sino i:= 0

Para esperar a que termine de cargar la página completamente


WebBrowser1.Navigate(URL);
while WebBrowser1.ReadyState < READYSTATE_COMPLETE do
Application.ProcessMessages;


Un saludo a todos