JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法

         JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
         这篇文章主要介绍了JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法,因转换的字符串数字都以0开头,导致parseInt函数在浏览器和Android WebView中转换结果不一样,本文给出了解决方法,需要的朋友可以参考下

  今天被一个问题困扰,有一个页面在浏览器(无论是手机还是PC)上运行良好,而通过WebView就出现了问题,有两个值得计算始终出错。于是就通过alert,把这个值显示出来,发现和浏览器上计算的结果差了很多,本来是正数,却变成了负数。仔细比对发现,其中一部分数字被抹掉了,这些数字都是通过parseInt由字符串转化而来的。而被抹掉的值,和其他正常的数字唯一区别是,它们都是以0开头的,比如“04903”,而其他值都是“90874”。如此,原因就很明显了,WebView支持的JavaScript的parseInt把以0开头的字符串全部转为了0。问题找到了解决就比较容易了,自己写一个str2Int的方法,来代替parseInt就可以了。

   代码如下:

  str2Int:function(str){

  str = str.replace(/^0+/g, '');

  if(str.length == 0){

  return 0;

  }

  return parseInt(str);

  }

时间: 2024-11-02 13:31:45

JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法的相关文章

JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法_javascript技巧

今天被一个问题困扰,有一个页面在浏览器(无论是手机还是PC)上运行良好,而通过WebView就出现了问题,有两个值得计算始终出错.于是就通过alert,把这个值显示出来,发现和浏览器上计算的结果差了很多,本来是正数,却变成了负数.仔细比对发现,其中一部分数字被抹掉了,这些数字都是通过parseInt由字符串转化而来的.而被抹掉的值,和其他正常的数字唯一区别是,它们都是以0开头的,比如"04903",而其他值都是"90874".如此,原因就很明显了,WebView支持

JavaScript在Android的WebView中出现一个问题

        今天被一个问题困扰,有一个页面在浏览器(无论是手机还是PC)上运行良好,而通过WebView就出现了问题,有两个值得计算始终出错.于是就通过alert,把这个值显示出来,发现和浏览器上计算的结果差了很多,本来是正数,却变成了负数.仔细比对发现,其中一部分数字被抹掉了,这些数字都是通过parseInt由字符串转化而来的.而被抹掉的值,和其他正常的数字唯一区别是,它们都是以0开头的,比如"04903",而其他值都是"90874".如此,原因就很明显了,W

javascript-Android 在webview中js怎么调用java里面的方法

问题描述 Android 在webview中js怎么调用java里面的方法 Android 在webview中js怎么调用java里面的方法 需要调用的是一个社会化分享的 解决方案 http://zhidao.baidu.com/link?url=8GQWxP5vy1Idkk3cVnU9YZpCHb4X5n37A9aeSdD3FaoPWIfXQzQ82D6nDpSJ6KBkfuqZsZ398EEcpXuIchcGiehjvrn1KqoWfVAAgNuWh2e 参考., 解决方案二: 1.布局文件

javascript中parseInt()函数的定义和用法分析_javascript技巧

本文实例讲述了javascript中parseInt()函数的定义和用法.分享给大家供大家参考.具体分析如下: 此函数可以解析一个字符串,并返回一个整数. 语法结构: 复制代码 代码如下: parseInt(string, type) 参数列表: 参数 描述 string 必需.要被解析的字符串. type 可选.表示要解析的数字的基数,通俗的说就是数字的进制,比如二进制.八进制或者十六进制.该值介于2 ~ 36之间. 详细说明: 一.指定type参数: 指定type参数后,函数就会按照指定的t

js中匿名函数的创建与调用方法分析_javascript技巧

本文实例分析了js中匿名函数的创建与调用方法.分享给大家供大家参考.具体实现方法如下: 匿名函数就是没有名字的函数了,也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值,很多新手朋友对于匿名函数不了解.这里就来分析一下. function 函数名(参数列表){函数体;} 如果是创建匿名函数,那就应该是: function(){函数体;} 因为是匿名函数,所以一般也不会有参数传给他. 为什么要创建匿名函数呢?在什么情况下会使用到匿

Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)_Android

本文实例讲述了Android检测手机中存储卡及剩余空间大小的方法.分享给大家供大家参考,具体如下: Android中Environment可用来检测手机中是否安装有存储卡以及文件存储路径等.StatFs可以获取存储卡的空间大小以及剩余空间大小.DecimalFormat可以实现把数字划分为一定的格式. 具体程序如下: import java.io.File; import java.text.DecimalFormat; import android.app.Activity; import a

android实现Uri获取真实路径转换成File的方法_Android

本文实例讲述了android实现Uri获取真实路径转换成File的方法.分享给大家供大家参考.具体实现方法如下: Uri uri = data.getData(); String[] proj = { MediaStore.Images.Media.DATA }; Cursor actualimagecursor = managedQuery(uri,proj,null,null,null); int actual_image_column_index = actualimagecursor.g

JavaScript中parseInt()函数问题

javascript|函数|问题 这个问题大家可能会忽视,我在项目中就遇到了.写了提醒一下大家!!! 在用javascript的parseInt函数时,parseInt("08")或者parseInt("09")返回的居然是0,而parseInt("01")...parseInt("07")都是正确的,一开始很难理解,后来发现出现这个问题的原因是当在前面有"0"时,javascript的debugger会认

关于javascript中parseInt函数的一个所谓的bug

javascript|函数 最近我正在升级一个日历控件,出现了一些莫名其妙的错误,最后发现原来是一个parseInt函数的一个所谓的bug引起的,就是在 parseInt("08") 和 parseInt("09") 处理时返回的居然都是 0 ,而 parseFloat函数就没有这样的错误,没办法,我将所有用到parseInt函数的地方都改成了parseFloat函数. 最后经过测试才发现,原来当前面有0的时候,parseInt默认把它当作八进制处理了,01--07