详细问题描述
离线打包之后,java层调用指定的webview中的js方法
java层
ArrayList<IWebview> weblist = SDK.obtainAllIWebview();
for (int i = 0; i < weblist.size(); i++) {
if (weblist.get(i).getOriginalUrl().contains("main.html") {
if (scanResult != null && !scanResult.equals("")) {
scanResult = "1" + scanResult;
Log.d(TAG, scanResult);
weblist.get(i).executeScript(
"javascript:receiveResult(" + scanResult+ ")");
} else {
Log.d(TAG, "没结果");
weblist.get(i).executeScript(
"javascript:receiveResult('test')");
}
}
}
js层
var receiveResult = function(scanResult) {
alert(scanResult);
};
问题在java层中,
weblist.get(i).executeScript("javascript:receiveResult(" + scanResult+ ")");
这里,当我传递较长的数字,比如身份证号码时
java层拿到的scanResult,值是"1511111198807175990",
通过上面这行代码,js层alert出来的scanResult值变成了"1511111198807176000"。不知道什么问题,如果我处理scanResult的时候像下面这样,
scanResult = "z" + scanResult;
那么java层最终拿到的scanResult值是"z511111198807175990",但是js端就接收不到值了……
[内容]
重现步骤
[步骤]
[结果]
[期望]
运行环境
安卓手机系统 5.1.1
安卓5+SDK 1.9.9.24608
3 个回复
最佳回复
lhyh (作者) - 目前就职成都
感谢大佬@DCloud_客服_Trust 和@DCloud_SDK_骁骑 ,在他们耐心协助下,解决了问题
是我自己的scanResult里面带了个换行符,导致从java层传过去的时候,js层解析挂了
lhyh (作者) - 目前就职成都
然后如果写死,比如这种,js端又能接收到了
lhyh (作者) - 目前就职成都
改了,还是gg,如果写死值,就字符串啊数字啊都过来了