经测试发现:
mui.fire()传递自定义数据的时候如果是 字符串中带 单引号,就会报错:
Uncaught SyntaxError: Unexpected identifier
如:
mui.fire(webview,"select",{"id":20,"title":"abc'cba"});
如果title内是 “0‘0”这类数字的,提示:
Uncaught SyntaxError: Unexpected number
如果title内是 “0\'0”这类数字的,提示:
Uncaught SyntaxError: Unexpected token ILLEGAL
我看了看mui.fire里面的实现,发现这样的字符串拼接有问题。
能不能用webview来实现传递参数,不用js这种方式?
翾 (作者)
你试试就知道了。比如:
var a={ "id": 20, "title": "abc'cba" };
alert(JSON.stringify(a));//没有问题的!
alert(JSON.parse(JSON.stringify(a)));//没问题的!
mui.fire(webview,"select",a);//报错!
上面的我提及的那几个SyntaxError都是可以复现的。
2015-04-10 18:36
DCloud_UNI_FXY
这是因为拼接字符串的时候有问题。因为我们拼接参数是用单引号的。而你的字符串也有单引号,导致js参数错误。
如果遇到参数双引号,单引号混用的情况。
你可以手动使用evalJS来拼写成正确的js函数调用。
或者修改源码的fire方法。JSON.stringify(obj).replace(/\'/, "\'")。替换一下单引号。
全面评估后,如果没问题,下个版本会修复一下。
2015-04-10 19:13
DCloud_UNI_FXY
正则少了点。/\'/g全局匹配替换。
2015-04-10 19:19