Hola
Gracias por responder
Estoy usando delphi community edition.
Vi el tutorial, pero no se como implementarlo, me pierdo con java.
Cuando el tutorial dice:
Supongamos también que el documento HTML define una función de JavaScript llamada foo () que toma una cadena y un parámetro entero.
Ya me perdi, como se que el javascrip tiene una llamado foo () ?
Saludos
Saludos..
por si te sirve con el codigo ejemplo del link que te proporcione, es posible el llenado de datos de formularios WEB y adicionalmente se puede inyectar codigo JAVASCRIPT para realizar cualquier tarea en la pagina.
Por ejemplo puedes llenar formularios mediante codigo
pagina web
<html>
<head>
<script>
function DoEval(expr){
// eval for delphi!
document
.getElementById
('result').value
=eval(expr
); }
function setData(cField,cData){
document.getElementById(cField).value = cData;
}
function clickSEND(){
var cValor;
cValor = document.getElementById('datonuevo').value;
alert(cValor);
}
function clickBOTON(cBottonName){
var btn;
btn = document.getElementById(cBottonName);
btn.click();
}
</script>
</head>
<body>
<input type='hidden' id='result' value=''>Type something here:
<br><input type='text' id='something' value='Hi there!!'>
<br><br>
<br><input type='text' name="datonuevo" id='datonuevo' value='?'>
<br><br>To get the above text, type the following code in the below text box:
<textarea style='width:100%; height:30px;' readonly>
document.getElementById('something').value;
</textarea>
<BR>
<button id="miBoton1" onclick="clickSEND();">ENVIAR</button>
<BR>
<a id
="linkBoton1" onclick
="clickSEND();">Link Button
</a
> <BR>
</body>
</html>
Mediante DELPHI puedes llenar el formulario y/o ejecutar funciones como CLICK a botonoes dentro de la pagina WEB algo asi..
try
// ejecuta la funcion setData pasando los parametros para llenar algun dato del formulario, setData(<idElemento>,<valoraAsignar>)
ExecuteJavaScript(WebBrowser1,'setData("datonuevo","HellBoy");');
except
on E:Exception do ConsoleRed(E.Message);
Y ejecutar funciones o hacer click a elementos de la pagina como:
try
ExecuteJavaScript(WebBrowser1,'clickBOTON("miBoton1");');
except
on E:Exception do ConsoleRed(E.Message);
Y para inyectar codigo a una pagina WEB, suponiendo que quieres llenar datos con las mismas funciones setData clickBoton, en el siguiente ejemplo se supone que las funciones inyectadas no existen en el codigo de la pagina..
Osea HolaMundo y setData no deben de existir en la pagina en la que probarias el codigo..
procedure TForm1.Button7Click(Sender: TObject);
var
Doc2 : IHtmlDocument2;
Script : IHtmlDOMNode;
HTMLWindow: IHTMLWindow2;
jsloader : TStringList;
begin
Doc2 := Webbrowser1.Document as IHtmlDocument2;
if Assigned(Doc2.body) then
begin
Script := Doc2.createElement('script') as IHTMLDOMNode;
jsloader := TStringList.Create();
jsloader.Add('function clickBOTON(cBottonName){ ');
jsloader.Add(' var btn;');
jsloader.Add(' btn = document.getElementById(cBottonName);');
jsloader.Add(' btn.click();');
jsloader.Add('}');
jsloader.Add('function setData(cField,cData){');
jsloader.Add(' document.getElementById(cField).value = cData;');
jsloader.Add('}');
jsloader.Add('function HolaMundo(){ ');
jsloader.Add(' alert("Hola Mundo");');
jsloader.Add('}');
(Script
as IHTMLScriptElement
).text
:= jsloader
.GetText(); (Doc2.body as IHtmlDomNode).appendChild(Script);
HTMLWindow := Doc2.parentWindow;
if Assigned(HTMLWindow) then
begin
// Ejecuta funcion inyectada HolaMundo
HTMLWindow.execScript('HolaMundo();', 'JavaScript');
// Ejecuta boton submit de la forma en la pagina web
HTMLWindow.execScript('clickBOTON("submit");', 'JavaScript');
Editado por pcicom, 27 diciembre 2018 - 09:28 .