嗨,我试图自动化组合框选择,然后屏幕刮擦结果。但是我在触发Combo Box Change事件时遇到了一个问题,在更改选择时不会调用它。 onchange事件被设置为一个JavaScript函数:事情是这样的:Delphi Web Automation如何将此变量传递给JavaScript函数
"AFunction(this,'combochange.asp?AVariable=true&')"
我试图使用HTMLWindow.execScript函数来调用JavaScript函数(机能缺失)。该函数直接使用“this”
问题:我将组合框引用为IHTMLSelectElement。如何在HTMLWindow.execScript调用中将“this”变量的引用传递给组合框?
目前代码:
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;
我也曾尝试SelectCombo.OnChange但不做任何事要么:(
感谢
PS这不是黑客,是简单地自动执行。耗时的重复任务,然后我想将结果提供给另一个站点(我已经全部正常工作)
[编辑] 一个相关的问题(这可能有助于回答原来的问题) - JavaScript是一种解释型语言,所以...当我称这个函数为函数行时,解释了这一点?肯定是的,是的?如果是这样,我想我只需要去“根”。例如:
函数(this.form.elements [“elementname”],“parameters”)。
我不知道太多的JavaScript,所以思考/语法沿着正确的线?