Red de conocimiento informático - Material del sitio web - Cómo llamar JavaScript en TWebBrowser usando Delphi

Cómo llamar JavaScript en TWebBrowser usando Delphi

La forma de llamar a un script en TWebBrowser es llamar al método execScript en la ventana del objeto relacionado con el documento HTML. En cuanto a cuál es la ventana de objeto relacionada con los documentos HTML, es IHTMLWindow2 utilizada en el siguiente código. La función ExecScript se define de la siguiente manera:

Función execScript(código const:WideStringconst language:WideString):variante ol;

El código del parámetro es una cadena en el formulario de llamada completo del función de guión. Por ejemplo, una función de JavaScript se define como:

Función foo(param1), luego código="foo(param1)".

El parámetro de idioma indica el tipo de script, como por ejemplo idioma="JavaScript".

Primero, obtenga el objeto de documento del componente del navegador; luego obtenga el objeto de ventana a través de la propiedad ParentWindow del objeto de documento. Finalmente, se puede llamar a execScript a través de este objeto de ventana. A continuación se muestra un ejemplo de implementación simple.

Ejemplo de implementación

Usando

MSHTML

programa TForm1. call foo(S: cadena; I: entero);

{Llamar a la función JavaScript Foo()}

Definir variables

doc:ihtmldocument 2; Documento HTML actual

html window:ihtmlwindow 2; //La ventana principal del documento HTML actual

JSFn:string //Llamada a la función de almacenamiento JavaScipt

Inicio

//Obtener una referencia al documento actual

Doc := WebBrowser1. El documento es IHTMLDocument2

Si no está asignado (Doc), entonces

Salir;

//Obtener la ventana principal del documento actual

ventana html:= doc . ventana principal;

Si (HTMLWindow) no está asignado, entonces

Salir;

//Ejecutar JavaScript

Pruebe

JSFn:= Format(' Foo(' % S ' ', %d)', [S, I]); //Construir llamada a función

HTMLWindow.execScript( JSFn, 'JavaScript'); //Ejecutar función

Excepto...

Manejar excepción cuando JavaScript no se puede ejecutar

Fin;

Fin;

Ejemplo de demostración

El ejemplo completo incluye dos partes:

Test.html: hay una función JavaScript SetFont en el archivo. Esta función selecciona la fuente del cuadro desplegable y luego hace clic en el botón "Establecer fuente" para cambiar la fuente de la página.

Programa Delphi: muestra la página a través de TWebbrowser y demuestra cómo llamar a funciones Javascript en la página.

Test.html:

& lthtml & gt

& lthead & gt

& lttitle & gt Demostración de cómo llamar a Javascript desde Delphi

& lt/title & gt;

& ltscript type = " texto/JavaScript " & gt; -

Función SetFont(nombre de fuente)

{

estilo de cuerpo del documento. familia de fuente = nombre de fuente

}

-& gt;

& lt/script & gt;

& lt/head & gt;

& ltbody & gt

Demostración de cómo llamar a Javascript desde Delphi

& ltform>

& ltselect size = 1 name = " self ont " >>p>

& ltoption value = " Verdana " seleccionado & gt;Verdana & lt/option & gt;

& ltoption value="Arial " >Arial & lt/option & gt;

& ltoption value=" Mensajería Nuevo " >Express Nuevo& lt/option & gt;

& ltoption value="Tahoma " >Tahoma & lt/option & gt;

& lt/select & gt;

& ltinput type = " button " value = " set font " name = " BTN 1 "

onclick = " set font(self ont . value)" & gt ;

& lt/form & gt;

& lt/body & gt;

& lt/html & gt;

Control Delphi Javascript

Usos

Ventana, mensaje, sistema, variable, clase, gráficos, control, formulario,

Cuadro de diálogo, OleCtrls, SHDocVw, StdCtrls, Mshtml.

Tipo

TForm1 = clase(TForm)

btnCallJS:TButton;

Fuentes CMB:TComboBox;

navegación web:TWebBrowser;

Visualización del formulario del programa (remitente: al objeto);

Proceso WebNavDocumentComplete (remitente: TObject

const pDisp:IDispatch; var URL :ole variante);

Procedimiento btnCallJSClick(remitente:al objeto);

Privado

{Declaración privada}

Público

{Declaración pública}

Fin;

Definir variables

forma 1:t forma 1;

Rendimiento

{$R*. dfm}

Programa TForm1.

FormShow(remitente:al objeto);

Inicio

//Desactivar botón

btnCallJS. enable:= false;

//Cargar página HTML

Navegación de red. Navegación(ExtractFilepath(application.ExeName)

+' prueba . html');

Fin

Programa TForm1. WebNavDocumentComplete(Sender: TObject

const pDisp:IDispatch; var URL:ole variante);

Inicio

//Cuando se carga la página HTML, botón Habilitar

btnCallJS. enable:= true;

Fin;

//Llamar a Javascript en la página HTML

Procesar TForm1.btnCallJSClick (remitente: al objeto);

p>

Definir variables

//Documento HTML actual

doc:ihtmldocument 2;

//La ventana principal del documento HTML actual

html wnd:ihtmlwindow 2;

//Nombre de la función Javascript que contiene parámetros

JsFnc:string;

Inicio

//Obtener una referencia al documento actual

Doc := WebNav. El documento es IHtmlDocument2

Si no está asignado (Doc), entonces

Salir;

//Obtener la ventana principal del documento HTML actual

html wnd:= doc . ventana principal;

Si (HtmlWnd) no está asignado, entonces

Salir;

//Ejecutar Javascript

Pruebe

JsFnc:= ' set font(' '+trim(CMB fonts.text)+' ' ')';

HtmlWnd.execScript( JsFnc, 'JavaScript') ;

Excepto...

Showmessage('¡Error al llamar a JavaScript!');

Fin;

Fin;

Fin.