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,所以思考/语法是否正确?
答案 0 :(得分:0)
答案是:
JSFn := 'AFunction(this.form2.elements["id_Combo"], ''combochange.asp?AVariable=true&'')';
线索是“解释”的,因此您只需要编写一行JavaScript源代码即可。
:)