2010-11-17 15 views
2

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?

Répondre

0

Et la réponse est:

JSFn := 'AFunction(this.form2.elements["id_Combo"], ''combochange.asp?AVariable=true&'')'; 

L'indice a été « interprété » si vous présentez tout comme vous écririez une ligne de la source JavaScript.

:)