android webView调用js函数的几种方法

最近在研究webViewjs的交互,发现一共有两种方式,一种是直接调用网页中的js函数,这种是网页端写好的js函数。另一种是加载本地写好的js文件,将内容注入到网页内,然后在调用。

 前提:

[java]  view plain  copy
  1. mWebView.addJavascriptInterface(newWebAppInterface(),"Android");  

 

1. 第一种方式:直接调用

  •  view.loadUrl("javascript:showAlert()");这里的showAlert()是网页里面的js函数               
  •  还可以Android自己调用自己的接口函数:view.loadUrl("javascript:window.Android.testtt()");这个testtt()是写在WebAppInterface()接口类里面的函数                                                                               
  •  还可以直接调用js的系统函数:                                view.loadUrl("javascript:alert(123)");

2. 第二种方式:加载注入js函数,onPageFinish()注入一次,多次调用(参考:                   http://www.cnblogs.com/rayray/p/3680500.html)                   

  •    将js函数体以字符串的形式注入到js里面,当你注入完JS之后你想要立即调用其中的方法,是可以调用到webview.loadUrl("javascript:jsContentString")如:

[java]  view plain  copy
  1. @Override  
  2.   public void onPageFinished(WebViewview, String url) {  
  3.     super.onPageFinished(view,url);  
  4.    
  5.     String dd = "function showAlert() {alert(678);if(window.XXJSBridge) {return; }console.log(02020);}";  
  6.     mWebView.loadUrl("javascript:"+dd);//注入js函数,               
  7.     mWebView.loadUrl("javascript:showAlert()");//调用js函数              
  8. }  


 

  •   页面加载完之后,直接向webview对应的html中加入<script>便签,并包含要注入的js的Url地址,当你注入完JS之后你想要立即调用其中的方法,你要确保注入的<script>便签对应的js文件加载完才可调用成功。如下:

   

[java]  view plain  copy
  1. String js = "var newscript =document.createElement(\"script\");";  
  2.        js += "newscript.src=\"http://www.123.456/789.js\";";  
  3.        js += "newscript.οnlοad=function(){xxx();};"//xxx()代表js中某方法  
  4.        js += "document.body.appendChild(newscript);";  
  5.   
  6.     @Override  
  7.      public voidonPageFinished(WebView view, String url)  
  8.       {  
  9.            super.onPageFinished(view, url);  
  10.             mWebView.loadUrl("javascript:"+ js);  
  11.             mWebView.loadUrl("javascript:xxx()");//调用js函数  
  12.       }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值