Delphi Web Automation如何将THIS变量传递给JavaScript函数

时间:2010-11-17 13:44:06

标签: javascript delphi automation

HI,我正在尝试自动化组合框选择,然后屏幕刮取结果。但是我在触发组合框更改事件时遇到问题,仅在更改选择时不会调用该事件。 onchange事件设置为JavaScript函数:像这样:

"AFunction(this,'combochange.asp?AVariable=true&')"

我正在尝试使用HTMLWindow.execScript函数来调用JavaScript函数(AFunction)。该函数直接使用“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,但它也没有做任何事情:(

感谢。

P.S。这不是黑客行为。它只是自动化一个耗时的重复性任务。我想然后把结果带到另一个站点(我已经全部工作了)

[编辑] 一个相关的问题(可能有助于回答原来的问题) - JavaScript是一种解释性的语言,所以......当我调用这个函数的时候,功能行是解释的吗?一定是,是吗?如果是这样,我想我只需要去“根”。类似的东西:

AFunction(this.form.elements [“elementname”],“parameters”)。

我不太了解JavaScript,所以思考/语法是否正确?

1 个答案:

答案 0 :(得分:0)

答案是:

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

线索是“解释”的,因此您只需要编写一行JavaScript源代码即可。

:)