HarmonyOS鸿蒙Next中webview组件javaScriptProxy在接收部分嵌套较深的数组时数组的每一项会变成null
HarmonyOS鸿蒙Next中webview组件javaScriptProxy在接收部分嵌套较深的数组时数组的每一项会变成null
webview组件javaScriptProxy在接收部分嵌套较深的数组时数组的每一项会变成null
- 页面添加webview组件,并注册javaScriptProxy
import webview from '@ohos.web.webview';
@Entry
@Component
struct Index {
controller: webview.WebviewController = new webview.WebviewController()
build() {
Column() {
Web({
src: $rawfile('test.html'),
controller: this.controller
})
.javaScriptProxy({
object: {
invoke(name: string, args: object) {
console.log('invoke args:' + JSON.stringify(args))
}
},
controller: this.controller,
methodList: ['invoke'],
name: 'globalChannel'
})
}
}
}
- rawfile下创建test.html 内容如下
<!Document>
<html>
<head>
<title>测试</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<style>
html,
body {
margin: 0px;
padding: 0px;
}
button {
width: 100%;
height: 50px;
}
</style>
<body>
<div>
<div>
<div>test.html</div>
<button id="echo">echo</button>
</div>
</div>
<script>
document.querySelector('#echo').addEventListener('click', async () => {
globalChannel.invoke(
'echo',
[
{
"args": {
"data": [
[
{
"currentTarget": {
"dataset": {
"info": {
"deliverMethod": [
"E_TICHED",
{
testArr1: [1, 2, 3]
}
],
"testArr2": [1, 2, 3]
}
},
}
}
]
]
},
}
]
)
})
</script>
</body>
</html>
点击webview内的echo按钮,打印日志如下
invoke args:[{"args":{"data":[[{"currentTarget":{"dataset":{"info":{"deliverMethod":[null,null],"testArr2":[null,null,null]}}}}]]}}]
可以看到前台比较深的数组中的每一项都变成了null
更多关于HarmonyOS鸿蒙Next中webview组件javaScriptProxy在接收部分嵌套较深的数组时数组的每一项会变成null的实战教程也可以访问 https://www.itying.com/category-93-b0.html
方法的参数和返回类型支持Dictionary,Array,最多嵌套10层
Dictionary,Array,最多嵌套10层,每层1w个数据。参考连接
更多关于HarmonyOS鸿蒙Next中webview组件javaScriptProxy在接收部分嵌套较深的数组时数组的每一项会变成null的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,WebView组件的javaScriptProxy在接收嵌套较深的数组时,可能会遇到数组项变为null的问题。这通常是由于跨语言数据传递时的序列化与反序列化机制导致的。建议在传递数据前,手动将嵌套数组扁平化或转换为JSON字符串,确保数据结构的完整性。另外,检查javaScriptProxy的配置,确保其支持复杂数据类型的传递。


