<JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法_javascript技巧
您的当前位置:首页正文

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

2023-12-05 来源:六三科技网

今天被一个问题困扰,有一个页面在浏览器(无论是手机还是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); }

小编还为您整理了以下内容,可能对您也有帮助:

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);
  }

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);
  }

本吧须知02-26求助,webview检测js代码语法错误

1.android中利用webview调用网页上的js代码。Android中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl("javascript:test()");2.网页上调用android中java代码的方法在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:mWebView.addJavascriptInterface(newObject(){publicvoidclickOnAndroid(){mHandler.post(newRunnable(){publicvoidrun(){Toast.makeText(Test.this,"测试调用java",Toast.LENGTH_LONG).show();}});}},"demo");在网页中,只需要像调用js方法一样,进行调用就可以b.c3.Java代码调用js并传参首先需要带参数的js函数,如functiontest(str),然后只需在调用js时传入参数即可,如下所示:mWebView.loadUrl("javascript:test('aa')");

本吧须知02-26求助,webview检测js代码语法错误

1.android中利用webview调用网页上的js代码。Android中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl("javascript:test()");2.网页上调用android中java代码的方法在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:mWebView.addJavascriptInterface(newObject(){publicvoidclickOnAndroid(){mHandler.post(newRunnable(){publicvoidrun(){Toast.makeText(Test.this,"测试调用java",Toast.LENGTH_LONG).show();}});}},"demo");在网页中,只需要像调用js方法一样,进行调用就可以b.c3.Java代码调用js并传参首先需要带参数的js函数,如functiontest(str),然后只需在调用js时传入参数即可,如下所示:mWebView.loadUrl("javascript:test('aa')");

android中调用webview的JS函数问题: 代码如下,JS函数没有出错,在浏览器中调用能

webview 要调用JS方法使用先增加webView.addJavascriptInterface(object, string);然后在object里增加函数让JS调用,在这个函数里再调用JS的函数,如:webView.loadUrl("javascript:show()");object可以这样public class JsObject { @JavascriptInterface public void goCDetail(final String detailURL, final String title) { post(new Runnable() { @Override public void run() { // TODO } }); }} @JavascriptInterface这个标签要版本高一点才有,不加这个标签是调用不到的

WebView中的JavaScript为什么不执行

WebView中的JavaScript不执行的原因:

浏览器未开启javascript

使用的js代码有问题,webview不兼容该代码。

1) 第一个坎:WebSettings

WebSettings webSettings = mWebView.getSettings();

webSettings.setJavaScriptEnabled(true);

2) 第二个坎: 有物

在运行脚本前,要有document对象,至少得load一个空白页

webView.loadData(“”,"text/html","UTF-8");

3)第三个坎: 异步

如果这么写是没戏的,因为第一个还没执行完呢

webView.loadData(“”,"text/html","UTF-8");

webView.loadUrl("javascript:alert('hello')");

解决这个问题。可以1)从界面按钮调用 2)延时调用。 3)在onPageFinished中调用

mWebView.setWebViewClient(new MyWebViewClient());

private class MyWebViewClient extends WebViewClient {

@Override

public void onPageFinished(WebView webView, String url) {

webView.loadUrl("javascript:"+script);

}

}

4)第四个坎:console/alert

以上三点完成后,js已经可以执行,可是为什么看不到console.log和alert呢?因为这2个要额外实现

mWebView.setWebChromeClient(new MyWebChromeClient()); //optional, for show console and alert

private class MyWebChromeClient extends WebChromeClient {

@Override

public boolean onConsoleMessage(ConsoleMessage cm) {

Log.d("test", cm.message() + " -- From line "

+ cm.lineNumber() + " of "

+ cm.sourceId() );

return true;

}

@Override

public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();

return true;

}

}

六三科技网还为您提供以下相关内容希望对您有帮助:

android中调用webview的JS函数问题: 代码如下,JS函数没有出错,在浏览器...

webview 要调用JS方法使用先增加webView.addJavascriptInterface(object, string);然后在object里增加函数让JS调用,在这个函数里再调用JS的函数,如:webView.loadUrl("javascript:show()");object可以这样public class JsObjec...

WebView中的JavaScript为什么不执行

webView.loadUrl("javascript:alert('hello')");解决这个问题。可以1)从界面按钮调用 2)延时调用。 3)在onPageFinished中调用 mWebView.setWebViewClient(new MyWebViewClient());private class MyWebViewClient extends ...

android中怎么调用javascript函数

思路: 1、需要使用webview打开网页 2、设置webview支持脚本 3、然后通过webview的loadUrl方式进行js函数调用 代码: webview.getSettings().setJavaScriptEnabled(true);webview.addJavascriptInterface(object,"name");//把...

Android-webview和js脚本语言交互的时候怎么获取js方法的返回值_百度...

方法:1、通过webview访问js脚本 2、js脚本再调用webview中的java函数把结果返回 示例代码:通过本地的webview打开脚本页面。调用步骤 1、设置webview支持脚本 webSettings.setJavaScriptEnabled(true);2、打开脚本页面 mWebView...

Android WebView 在开发过程中有哪些坑

1.多线程 如果你在子线程中调用WebView的相关方法,而不在UI线程,则可能会出现无法预料的错误。所以,当你的程序中需要用到多线程时候,也请使用 runOnUiThread()方法来保证你关于WebView的操作是在UI线程中进行的:runOnUiT...

为什么页面上引用的js文件中,函数不能执行?

具体的解决方法:1、函数应当直接写在页面即可调用;2、确保有引用js文件,如果引用了的话,也是可以调用的。引用方式,可以直接拖拽(因为路径准确),也可以自己写,引用脚本: 3、引用的js文件一定要在调用之前,否则就找...

在android中怎样调用本地js文件里的方法并得到返回值

下面是在Android中调用JavaScript方法以及如何在js中调用本地方法。1、在Assets下放一个简单的html文件jstest/apk/res/android" &gt; &lt;WebView android:id="@+id/wv_test" android:layout_width="fill_parent" ...

jsprint组件异常怎么处理

catch块在其他的函数。onerror() 语法onerror事件处理程序是第一个特点,方便JavaScript处理错误。错误事件被触发窗口对象,每当一个异常页面上出现。例如:[js] view plaincopyprint &lt;!-- window.onerror = function () { alert("A...

Android 在WebView中通过javascript获取网页源码,并在TextView或者在Ed...

"desc": "ios","shareUrl": "http://www.sinodata.com.cn"});function sendInfoToJava(){window.AndroidWebView.showInfoFromJs(share);}&lt;!--在android代码中调用此方法--&gt;function showInfoFromJava(msg){alert("...

Android WebView 在开发过程中有哪些坑

切换WebView闪屏问题。如果你需要在同一个ViewGroup中来回切换不同的WebView(包含了不同的网页内容)的话,你就会发现闪屏是不可避免的。这应该是Android硬件加速的Bug,如果关闭硬件加速这种情况会好很多,但无法获得很好的...

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

Top