Android 加载H5页面数据无法传递正确展示的一个可能原因

mac2025-08-13  7

Android 加载H5页面数据无法传递正确展示的一个可能原因

最近解决一个比较有意思的问题:

功能: 是这样的Android 通过 WebView 加载一个H5网页,然后向网页里动态传递一些数据,传递方式为将数据转成 json,然后通过 loadurl 的方式传递json,调用js设置网页数据。

现象: 使用过程中发现某些情况下页面无法正确加载传递过去的json数据,导致H5页面展示错误。

原因: Android 端代码通过Gson将对象转为字符串,当字符串种含有换行符(\n或者\r)的时候,H5 js代码接受到数据解析json字符串的是时候会报错,然后下面的js代码会终止运行,导致界面展示错误。

解决: 在H5页面获取到数据转换为json对象前将特殊字符增加转义字符

//这里不要直接使用replace(/[\r\n]/g, "\\r\\n")会出现死循环 jsonstring=jsonstring.replace(/[\r]/g, "\\r").replace(/[\n]/g, "\\n")

这里还有其他解决办法,比如控制输入特殊字符,这里根据业务情况决定

最新回复(0)