browser 编程中 Delphi 如何返回数组给 javascript 在 Delphi 中使用免费的一个程序 TEmbeddedWB 替换常规的 TWebBrowser 组件。创建一个自动化对象 MyExternal,以实现 IDispatch 接口。添加一个 Hello 方法,输出类型设置为 Variant *, 其代码如下: function TMyExternal.Hello: OleVariant;var arr: OleVariant;begin arr := VarArrayCreate([0, 9], varVariant); arr[0] := '1'; arr[1] := 432.3; arr[2] := '你好'; arr[3] := '哈哈fjsd3435'; result := arr;end;在主窗体中写如下代码,主要目的是关联 window.external 的扩展实现: procedure TForm1.FormCreate(Sender: TObject);var path: string;begin myBrowser.OnGetExternal := BrowserGetExternal; Application.ProcessMessages; path := ExtractFilePath(Application.ExeName) + 'default.htm'; myBrowser.Go(path);end;function TForm1.BrowserGetExternal(out idisp: IDispatch): HRESULT;var myExternal: TMyExternal;begin myExternal := TMyExternal.Create; idisp := myExternal; result := S_OK; end;在 HTML 中,记住要用 js 里的 VBArray 来取得返回数组,再转换为 js 的数组: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title> New Document </title><meta name="Generator" content="EditPlus"><meta name="Author" content="Neil Chen(木野狐)"><meta name="keywords" content=""><meta name="description" content=""><SCRIPT LANGUAGE="JavaScript"><!--function test() { var result = window.external.Hello(); alert(result.length); var vbarr = new VBArray(result); var arr = vbarr.toArray(); alert(arr.length); for (var i = 0; i < arr.length; i++) txtResult.value += arr[i] + '\n'; }//--></SCRIPT></head><body>Hello World!<button onclick="test();">Test</BUTTON><textarea id="txtResult" rows="10" cols="60"></textarea></body></html>