您的位置:首页 > 移动开发 > Android开发

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

2014-09-24 16:52 721 查看
   最近在研究webView与js的交互,发现一共有两种方式,一种是直接调用网页中的js函数,这种是网页端写好的js函数。另一种是加载本地写好的js文件,将内容注入到网页内,然后在调用。

 前提: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")如:

@Override
public void onPageFinished(WebViewview, String url) {
super.onPageFinished(view,url);

String dd = "function showAlert() {alert(678);if(window.XXJSBridge) {return; }console.log(02020);}";
mWebView.loadUrl("javascript:"+dd);//注入js函数,
mWebView.loadUrl("javascript:showAlert()");//调用js函数
}

 

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

    String js = "var newscript =document.createElement(\"script\");";
js += "newscript.src=\"http://www.123.456/789.js\";";
js += "newscript.onload=function(){xxx();};"; //xxx()代表js中某方法
js += "document.body.appendChild(newscript);";

@Override
public voidonPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
mWebView.loadUrl("javascript:"+ js);
mWebView.loadUrl("javascript:xxx()");//调用js函数
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android开发 webview js