HI, J'essaie d'automatiser une sélection de zone de liste déroulante, puis l'écran Scrape les résultats. Mais j'ai un problème pour déclencher l'événement Combo Box Change qui n'est pas appelé en changeant simplement la sélection. L'événement onchange est réglé sur une fonction JavaScript: Quelque chose comme ceci:Delphi Web Automation Comment passer CETTE variable à la fonction JavaScript
"AFunction(this,'combochange.asp?AVariable=true&')"
Je suis en train d'utiliser la fonction de HTMLWindow.execScript pour appeler la fonction JavaScript (AFunction). La fonction utilise directement "this"
La question: J'ai une référence à la zone de liste déroulante en tant que IHTMLSelectElement. Comment puis-je transmettre une référence à la zone de liste déroulante pour la variable "this" dans l'appel HTMLWindow.execScript?
Code actuel:
procedure TFormMain.CallComboChange(Doc: IHTMLDocument2; SelectCombo: IHTMLSelectElement);
var
HTMLWindow: IHTMLWindow2; // parent window of current HTML document
JSFn: string;
begin
HTMLWindow := Doc.parentWindow;
if not Assigned(HTMLWindow) then
Exit;
try
JSFn := 'AFunction(id_Combo, combochange.asp?AVariable=true&)';
HTMLWindow.execScript(JSFn, 'JavaScript'); // execute function
except
ShowMessage('Opps exception in javascript call');
end;
end;
J'ai aussi essayé SelectCombo.OnChange mais il est tout simplement ne fait aucune chose :(
Merci
PS ce n'est pas de piratage visant à automatiser.. temps tâche répétitive. Je veux prendre ensuite les résultats et les intégrer dans un autre site (que j'ai tout travail OK)
[Modifier] Une question connexe (qui pourrait aider à répondre à l'original) - JavaScript est un langage interprété alors ... Quand j'appelle cette fonction est la ligne de fonction Interprété à ce moment-là? Ça doit être, oui? Si oui, je pense que je dois juste aller à la "racine". Quelque chose comme:
AFunction (this.form.elements [ "elementname"], "paramètres").
Je ne sais pas beaucoup de JavaScript est donc que la pensée/syntaxe dans la bonne direction?