Cómo llamar JavaScript en TWebBrowser usando Delphi
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 p>
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 p>
{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 p>
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.