这个问题在原生回调js比较常见,因为回调js是执行了一句js语句,出问题情况一般回调参数包含了‘或"
我目前的解决办法是在java或oc层把需要传的字符串数据简单序列化为unicode样式字符串,js收到再反序列化出来。
当然字符串会变长很多。比如abc=> “97|98|99”
oc写法大概这样
NSMutableArray *result = [NSMutableArray array];
for(int index = 0; index < [params length]; index++){
NSString *charStr = [NSString stringWithFormat:@"%d",[params characterAtIndex:index]];
[result addObject:charStr];
}
return [result componentsJoinedByString:@"|"];
js层收到数据大概处理还原回来
let ss = params.split("|");
let buffer = new Uint16Array(ss.length);
for (let i = 0; i < ss.length; i++) {
buffer[i] = parseInt(ss[i]);
}
return String.fromCharCode.apply(null, buffer);
实际过程,这块封装一下,仅供参照