zoukankan
html css js c++ java
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
>
查看全文
相关阅读:
【USACO19Feb-S】伟大的植被恢复The Great Revegetation
【USACO19Jan-S】山景Mountain View
读取jar内部文件的方式
spring cloud nacos 平台搭建——网关搭建
spring cloud nacos 平台搭建——服务注册
spring cloud nacos 平台搭建——nacso注册中心搭建
idea .groovy脚本生成实体类脚本模板
移动开发思路
分布式事务五-TC全局事务协调器
分布式事务四-Seata AT模式-案例
原文地址:https://www.cnblogs.com/RChen/p/231305.html
最新文章
反射理论
5、k8s应用flannel失败解决Init:ImagePullBackOff
19、Linux 中yumdownloader 和 repotrack
shell判断新字符串列表是否在老字符串列表中
再识requests
初识requests
CentOS7.6 鲜为人知的/etc/resolv.conf 之 /etc/resolv.conf.save (保持/etc/resolv.conf不被修改:/etc/dhcp/dhclient-enter-hooks 无效之/etc/resolv.conf被清空的特殊案例)
urllib结合 concurrent.futures 多线程下载文件。
使用Python 计算KS3 签名 (金山云对象存储签名)
Base64编码原来是这么回事儿
热门文章
Python3 中bytes数据类型深入理解(ASCII码对照表)
Markdown常见数学符号和运算
使用Foxmail提示输入QQ密码?
关于深度阅读《世界新格局下的创业创新机会》--相关记录和关键词标注版(原文内容来源于:奇绩论坛,陆奇)
积攒的安装系统的方案记录(ing...)
DSM7.0 使用体验
The "Go" Learning Trip -- 3. Go Basics2 -- Part1-3
[bzoj4668]冷战 -按秩合并并查集
CF618E Robot Arm- 计算几何- 线段树
CF911G Mass Change Queries- 动态开点线段树
Copyright © 2011-2022 走看看