android webView调用js函数的几种方法
2014-09-24 16:52
721 查看
最近在研究webView与js的交互,发现一共有两种方式,一种是直接调用网页中的js函数,这种是网页端写好的js函数。另一种是加载本地写好的js文件,将内容注入到网页内,然后在调用。
前提:mWebView.addJavascriptInterface(newWebAppInterface(),"Android");
还可以Android自己调用自己的接口函数:view.loadUrl("javascript:window.Android.testtt()");这个testtt()是写在WebAppInterface()接口类里面的函数
还可以直接调用js的系统函数: view.loadUrl("javascript:alert(123)");
@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函数
}
前提: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函数的几种方法
- android 4.4 js调用webview activity方法记载
- Android Webview和JavaScript交互--JS调用Android方法
- Android中webview js与native方法互相调用
- 在webView 中使用JS 调用 Android / IOS的函数 Function
- webView中js调用android方法一调用程序就退出是怎么回事
- Android下怎么利用webView去调用JS里面的方法
- Android webview和js互相调用实现方法
- 安卓与JS互调之android webview addJavascriptInterface 的方法不能调用
- JS 调用IOS Android webview方法
- ANDROID WEBVIEW和JAVASCRIPT交互_JS调用ANDROID方法
- WebView之js调用Android类的方法传递数据
- Android WebView详解之JS调用Java方法
- 【Js】调用Android WebView定义的方法总结
- webview通过js调用android方法
- Android中WebView使用3,html掉android中的方法webView调用js中的方法
- android中webview携带cookie以及webview所加载网页中js调用java方法问题
- Android webview js 调用java方法报错"Uncaught TypeError: Object [object Object] has no method xx
- 在用Android WebView调用js时方法错误
- android webview java调用js方法没反应