美文网首页< iOS >程序员
iOS 使用WKWebView 的 evaluateJavaSc

iOS 使用WKWebView 的 evaluateJavaSc

作者: 王博达 | 来源:发表于2017-09-30 09:43 被阅读98次

    今天在和 H5 交互的时候,发现一个奇怪的问题,当我把字符串格式的带参方法传给前端时,数字参数的最后一位数字会发生改变。

     NSString *jsMothod=[NSString stringWithFormat:@"build_visitor_group(%@)",theGroup.groudID];
     [self.rootViewController.wc.webView evaluateJavaScript:jsMothod completionHandler:nil];
    

    以上代码中,theGroup.groudID 为 15066676292965107。
    但是传给前端的时候,参数会自动变成 15066676292965108。

    IMG_2746(20170930-092748).jpg

    这个弹窗是 H5 给我发的,可以看到,尾数为7的数字参数到了前端就变化成了8。

    后来我在参数两侧加了双引号,就解决了在和H5交互的过程中数字发生变化的问题了。

    NSString *jsMothod=[NSString stringWithFormat:@"build_visitor_group(\"%@\")",theGroup.groudID];
    [self.rootViewController.wc.webView evaluateJavaScript:jsMothod completionHandler:nil];
    

    因为看不到 evaluateJavaScript 的实现方法,所以没办法判断问题出在哪。可以猜想是在和 H5 交互的过程中,系统首先将字符串格式的数字转化成了基础数据类型,再将基础数据类型的数字传到前端转化成字符串,从而导致了数字精度缺失发生变化。

    在数字两侧加上双引号能够防止数字自动转换成基础数据类型,强制将其声明为字符串类型,这样无论多大的数字都能够正确的传达了。

    相关文章

      网友评论

        本文标题:iOS 使用WKWebView 的 evaluateJavaSc

        本文链接:https://www.haomeiwen.com/subject/mflgextx.html