2010-11-17 26 views
2

嗨,我試圖自動化組合框選擇,然後屏幕刮擦結果。但是我在觸發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,所以思考/語法沿着正確的線?

回答

0

答案是:

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

的線索是「解釋」所以你只要出示它,你會寫一行JavaScript源。

:)

相關問題