GVKun编程网logo

javascript – screen.width android

16

本文的目的是介绍javascript–screen.widthandroid的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于androidjavascript“Uncau

本文的目的是介绍javascript – screen.width android的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于android javascript “ Uncaught ReferenceErro”、Android JavaScriptCore 相关资料、android javascriptinterface proguard解决混淆后不能调用javascript、Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用的知识。

本文目录一览:

javascript – screen.width android

javascript – screen.width android

如果我使用我的DroidX本机浏览器追踪screen.width,我首先按预期收到320,但在后续重新加载(不改变方向)时,我收到800 …为什么会这样?

解决方法:

这是一个Android bug.有时当页面首次加载window.screen.width和window.screen.height是错误的.您可以尝试进行超时,然后运行代码.

setTimeout(YourFunction, 200);

另见这里android issue

android javascript “ Uncaught ReferenceErro”

android javascript “ Uncaught ReferenceErro”

 mWebView = (WebView) findViewById(R.id.webView); 
        mWebView.setWebChromeClient(new MyWebChromeClient());
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.addJavascriptInterface(new Evt(), "evt");
        mWebView.addJavascriptInterface(new Player(), "player");
        
        mWebView.loadUrl("javascript:var iSTB = new Object();iSTB.evt = evt;");
        mWebView.loadUrl("javascript:iSTB.player = player;");
        
        mWebView.loadUrl("javascript:wave()");
        mWebView.loadUrl("file:///android_asset/ui/uitest.html"); 

////uitest.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>UI Test</title>
<script type="text/javascript"> 
        function wave() { 
        evt.debug("++++++++++WEB"); 
        } 
</script>    
</head>
<body>
<script type="text/javascript">
iSTB.evt.debug("++++++++++WEB"); 
iSTB.player.Debug();
</script>
</body>
</html>

版本:froyo-2.2
以下错误是在开发板上运行的结果:
 E/Web Console(1980): Uncaught ReferenceError: evt is not defined at :1
 E/Web Console(1980): Uncaught ReferenceError: player is not defined at :1
E/Web Console(1980): Uncaught ReferenceError: wave is not defined at :1
 E/Web Console(1980): Uncaught TypeError: Cannot call method ''debug'' of undefined at file:///android_asset/ui/uitest.html:17

以下错误是在模拟器运行的结果:
 E/Web Console(1980): Uncaught ReferenceError: evt is not defined at :1
 E/Web Console(1980): Uncaught ReferenceError: player is not defined at :1

Android JavaScriptCore 相关资料

Android JavaScriptCore 相关资料

LiquidCore

android javascriptinterface proguard解决混淆后不能调用javascript

android javascriptinterface proguard解决混淆后不能调用javascript

方法一:

-keepattributes *Annotation*



Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用

Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用

在 Android 的开发过程中、遇到一个新需求、那就是让 Java 代码和 Javascript 代码进行交互、在 IOS 中实现起来很麻烦、而在 Android 中相对来说容易多了、Android 对这种交互进行了很好的封装、我们可以很简单的用 Java 代码调用 WebView 中的 js 函数、也可以用 WebView 中的 js 来调用 Android 应用中的 Java 代码。

案例主要包含了:

  1.  Html 中调用 Android 方法
  2. Android 调用 JS 方法无参数
  3. Android 调用 JS 方法有参数
  4. Android 调用 JS 方法有参数且有返回值处理方式 1
  5. Android 调用 JS 方法有参数且有返回值处理方式 2(Android4.4 以上)

1:创建 JS 对象

webView.addJavascriptInterface(new JsInterface(), "obj");
public class JsInterface {
	//JS中调用Android中的方法 和返回值处理的一种方法
		
	/****
          * Html中的点击事件 onclick
	  *  <input type="button" value="结算" onclick="showToast(''12'')">
	  * @param toast
	  */
	@JavascriptInterface
	public void showToast(String toast) {
	  Toast.makeText(MainActivity.this, "你的商品价格是:¥"+toast, Toast.LENGTH_SHORT).show();
	}
}
 function showToast(toast) { 
	var money=toast*3;
	javascript:obj.showToast(money);
}

2:

webView.loadUrl("javascript:funFromjs()");
function funFromjs(){
    document.getElementById("helloweb").innerHTML="div显示数据,无参数";
}

3:

webView.loadUrl("javascript:funJs(''Android端传入的信息,div标签中显示,含参数'')");
function funJs(msg){
   document.getElementById("hello2").innerHTML=msg;
}

4: 

webView.loadUrl("javascript:sum(6,6)");
/***
 * Android代码调用获取J是中的返回值
 * 
 * @param result
*/
   @JavascriptInterface
   public void onSum(int result) { 
	Toast.makeText(MainActivity.this, "Android调用JS方法且有返回值+计算结果=="+result, Toast.LENGTH_SHORT).show();
   } 
function sum(i,m){ 
    var result = i*m; 
    document.getElementById("h").innerHTML= "Android调用JS方法且有返回值--计算结果="+result; 
    javascript:obj.onSum(result) 
} 

5:

 webView.evaluateJavascript("sumn(6,11)", new ValueCallback<String>() {
         @Override
	 public void onReceiveValue(String value) {
	     Toast.makeText(MainActivity.this, "返回值"+value, Toast.LENGTH_SHORT).show();
           }
});
function sumn(i,m){ 
     var result = i*m; 
     document.getElementById("hh").innerHTML= "Android调用JS方法且有返回值--计算结果="+result; 
     return result;
} 

   注意:

1、Java 调用 js 里面的函数、效率并不是很高、估计要 200ms 左右吧、做交互性很强的事情、这种速度很难让人接受、而 js 去调 Java 的方法、速度很快、50ms 左右、所以尽量用 js 调用 Java 方法

2、Java 调用 js 的函数、没有返回值、调用了就控制不到了

3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString () 函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间

4、网页中尽量不要使用 jQuery、执行起来需要 5-6 秒、最好使用原生的 js 写业务脚本、以提升加载速度、改善用户体验。

注:使用的是本地的 Html 文件,不过在网络链接的 Html 文件也是可以实现的。   

源码点击下载

我们今天的关于javascript – screen.width android的分享已经告一段落,感谢您的关注,如果您想了解更多关于android javascript “ Uncaught ReferenceErro”、Android JavaScriptCore 相关资料、android javascriptinterface proguard解决混淆后不能调用javascript、Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用的相关信息,请在本站查询。

本文标签: