2010-03-27 100 views
7

Estoy codificando una aplicación pequeña, ¿en el centro choqué en algún punto donde tengo que ejecutar javascript para obtener mis datos?cómo ejecutar javascript en delphi?

En mi proceso, tengo que iniciar sesión en alguna url y luego ir a alguna página y tengo que obtener datos de eso. Hice todo esto con indy idhttp, obtuve toda la información excepto una columna que necesita JavaScript para obtener valor, luego traté de usar twebbowser para que funcione, pero ¿cómo puedo usar las cookies para habilitarlo en webbrowser?

navegué Navegadorpara ('http://mysite.com/login.php user y pass '), así su Usuario y luego he intentado acceder a la siguiente vínculo como (' http://mysite.com/link1/example.php') pero dirigir a la página de acceso :(

cualquier ayuda apreciada:)

Respuesta

2

Su mejor apuesta sería ser para automatizar el IE. Tome una copia de embeddedwb, coloque en un formulario y navegue a la url que necesita para ejecutar algo. Hay un documento propiedad del componente que devuelve un OLEVariant, use esto para ejecutar una declaración de estilo DHTML ... algo así como document.form.submit;.

Puede ocultar fácilmente la ventana utilizada para la automatización, una técnica que he utilizado es colocarla en una página nueva en un control de página, agregar una segunda página para mostrar el estado, mostrar la página de estado y ocultar las pestañas .

+0

¿Sabe si esto se puede hacer en un servicio de Windows? ¿O tiene que ser una aplicación Win32? –

6

¿Cuál es su pregunta ahora? En el título, pregunta cómo ejecutar JavaScript. Intente lo siguiente: el uso

uses 
    MSHTML_TLB, SHDocVw, ShellAPI; 

function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean; 
var 
    win: IHTMLWindow2; 
    Olelanguage: Olevariant; 
begin 
    if doc <> nil then 
    begin 
    try 
     win := doc.parentWindow; 
     if win <> nil then 
     begin 
     try 
      Olelanguage := language; 
      win.ExecScript(script, Olelanguage); 
     finally 
      win := nil; 
     end; 
     end; 
    finally 
     doc := nil; 
    end; 
    end; 
end; 

muestra:

IDoc: IHTMLDocument2; 
Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc); 
ExecuteScript(iDoc, 'document.login.submit()', 'JavaScript'); 

(Esto, y más, se puede encontrar here).


Luego, en el texto que se preguntan cómo utilizar las cookies (cuando se utiliza TWebBrowser esto debe suceder de forma automática). Al usar Indy HTTP, solo tiene que adjuntar un TIdCookieManager a su instancia TIdHTTPClient, eso es todo (pero es probable que no quiera usarlo de todos modos, debido al requisito del script ...)

Cuestiones relacionadas