Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
555a1818
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
555a1818
编写于
10月 21, 2022
作者:
O
openharmony_ci
提交者:
Gitee
10月 21, 2022
浏览文件
操作
浏览文件
下载
差异文件
!10937 挑单合入3.2Beta3【优化webMessage文档】如何进行webview内外通信,接口资料分散,优化改进
Merge pull request !10937 from echoorchid/OpenHarmony-3.2-Beta3
上级
b568682d
ef2eb518
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
74 addition
and
13 deletion
+74
-13
zh-cn/application-dev/reference/arkui-ts/ts-basic-components-web.md
...ication-dev/reference/arkui-ts/ts-basic-components-web.md
+74
-13
未找到文件。
zh-cn/application-dev/reference/arkui-ts/ts-basic-components-web.md
浏览文件 @
555a1818
...
...
@@ -3404,38 +3404,99 @@ postMessage(options: { message: WebMessageEvent, uri: string}): void
**示例:**
```
ts
//
xx
x.ets
//
inde
x.ets
@
Entry
@
Component
struct
WebComponent
{
controller
:
WebController
=
new
WebController
();
ports
:
WebMessagePort
[]
=
null
;
@
State
sendFromEts
:
string
=
'
Send this message from ets to HTML
'
;
@
State
receivedFromHtml
:
string
=
'
Display received message send from HTML
'
;
build
()
{
Column
()
{
Button
(
'
postMessage
'
)
// 展示接收到的来自HTML的内容
Text
(
this
.
receivedFromHtml
)
// 输入框的内容发送到HTML
TextInput
({
placeholder
:
'
Send this message from ets to HTML
'
})
.
onChange
((
value
:
string
)
=>
{
this
.
sendFromEts
=
value
;
})
// 1、创建两个消息端口
Button
(
'
1.CreateWebMessagePorts
'
)
.
onClick
(()
=>
{
this
.
ports
=
this
.
controller
.
createWebMessagePorts
();
console
.
log
(
"
createWebMessagePorts size:
"
+
this
.
ports
.
length
)
})
// 2、将其中一个消息端口发送到HTML侧,由HTML侧保存并使用。
Button
(
'
2.PostMessagePort
'
)
.
onClick
(()
=>
{
var
sendPortArray
=
new
Array
(
this
.
ports
[
1
]);
var
msgEvent
=
new
WebMessageEvent
();
msgEvent
.
setData
(
"
__init_port
s
__
"
);
msgEvent
.
setData
(
"
__init_port__
"
);
msgEvent
.
setPorts
(
sendPortArray
);
this
.
controller
.
postMessage
({
message
:
msgEvent
,
uri
:
"
*
"
});
})
Web
({
src
:
'
www.example.com
'
,
controller
:
this
.
controller
})
// 3、另一个消息端口在应用侧注册回调事件。
Button
(
'
3.RegisterCallback
'
)
.
onClick
(()
=>
{
this
.
ports
[
0
].
onMessageEvent
((
result
:
string
)
=>
{
var
msg
=
'
Got msg from HTML:
'
+
result
;
this
.
receivedFromHtml
=
msg
;
})
})
// 4、使用应用侧的端口给另一个已经发送到HTML的消息端口发送消息。
Button
(
'
4.SendDataToHtml5
'
)
.
onClick
(()
=>
{
var
msg
=
new
WebMessageEvent
();
msg
.
setData
(
this
.
sendFromEts
);
this
.
ports
[
0
].
postMessageEvent
(
msg
);
})
Web
({
src
:
$rawfile
(
"
index.html
"
),
controller
:
this
.
controller
})
.
javaScriptAccess
(
true
)
.
fileAccess
(
true
)
}
}
}
// xxx.js
// index.html
<!
DOCTYPE
html
>
<
html
>
<
body
>
<
h1
>
Web
Message
Port
Demo
<
/h1
>
<
div
style
=
"
font-size: 24pt;
"
>
<
input
type
=
"
button
"
value
=
"
5.SendToEts
"
onclick
=
"
PostMsgToEts(msgFromJS.value);
"
/><
br
/>
<
input
id
=
"
msgFromJS
"
type
=
"
text
"
value
=
"
send this message from HTML to ets
"
style
=
"
font-size: 16pt;
"
/><
br
/>
<
/div
>
<
p
class
=
"
output
"
>
display
received
message
send
from
ets
<
/p
>
<
/body
>
<
script
src
=
"
index.js
"
><
/script
>
<
/html
>
// index.js
var
h5Port
;
window
.
addEventListener
(
'
message
'
,
function
(
event
){
if
(
event
.
data
==
'
__init_ports__
'
)
{
var
output
=
document
.
querySelector
(
'
.output
'
);
window
.
addEventListener
(
'
message
'
,
function
(
event
)
{
if
(
event
.
data
==
'
__init_port__
'
)
{
if
(
event
.
ports
[
0
]
!=
null
)
{
h5Port
=
event
.
ports
[
0
];
h5Port
=
event
.
ports
[
0
];
// 1. 保存从ets侧发送过来的端口
h5Port
.
onmessage
=
function
(
event
)
{
console
.
log
(
'
receive message from ets, on message:
'
+
event
.
data
);
// 2. 接收ets侧发送过来的消息.
var
msg
=
'
Got message from ets:
'
+
event
.
data
;
output
.
innerHTML
=
msg
;
}
}
}
})
// 3. 使用h5Port往ets侧发送消息.
function
PostMsgToEts
(
data
)
{
h5Port
.
postMessage
(
data
)
}
```
### getUrl<sup>9+</sup>
...
...
@@ -5065,7 +5126,7 @@ close(): void
### postMessageEvent<sup>9+</sup>
postMessageEvent(message: WebMessageEvent): void
发送消息。
发送消息。
完整示例代码参考
[
postMessage
](
#postmessage9
)
**参数:**
...
...
@@ -5100,7 +5161,7 @@ postMessageEvent(message: WebMessageEvent): void
### onMessageEvent<sup>9+</sup>
onMessageEvent(callback: (result: string) => void): void
注册回调函数,接收HTML5侧发送过来的消息。
注册回调函数,接收HTML5侧发送过来的消息。
完整示例代码参考
[
postMessage
](
#postmessage9
)
**参数:**
...
...
@@ -5172,7 +5233,7 @@ getData(): string
### setData<sup>9+</sup>
setData(data: string): void
设置当前对象中的消息。
设置当前对象中的消息。
完整示例代码参考
[
postMessage
](
#postmessage9
)
**参数:**
...
...
@@ -5240,7 +5301,7 @@ getPorts(): Array\<WebMessagePort\>
### setPorts<sup>9+</sup>
setPorts(ports: Array
\<
WebMessagePort
\>
): void
设置当前对象中的消息端口。
设置当前对象中的消息端口。
完整示例代码参考
[
postMessage
](
#postmessage9
)
**参数:**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录