Android webView js问题
来源:互联网 发布:情感分析算法 编辑:程序博客网 时间:2024/06/05 11:37
Android中向webview注入js代码可以通过webview.loadUrl(“javascript:xxx”)来实现,然后就会执行javascript后面的代码。
但是当需要注入一整个js文件的时候,貌似就有点麻烦了。
不过理清以下思路,方法其实也很简单,如下:
我们通过在webview的onPageFinished方法中执行js代码注入:
第一种:
当webview加载完之后,读取整个js文件中的内容,然后将整个文件内容以字符串的形式,通过webview.loadUrl(“javascript:fileContentString”)注入
URL url = new URL("http://www.rayray.ray/ray.js");in = url.openStream();byte buff[] = new byte[1024];ByteArrayOutputStream fromFile = new ByteArrayOutputStream();FileOutputStream out = null;do { int numread = in.read(buff); if (numread <= 0) { break; } fromFile.write(buff, 0, numread); } while (true);String wholeJS = fromFile.toString();
@Overridepublic void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); webview.loadUrl("javascript:" + wholeJS); }
第二种:
页面加载完之后,直接向webview对应的html中加入
String js = "var newscript = document.createElement(\"script\");";js += "newscript.src=\"http://www.123.456/789.js\";";js += "document.body.appendChild(newscript);";
@Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); webview.loadUrl("javascript:" + js); }
后记:上面两种方式中,第二种方法更加简单方便一点。不过第二种方法也有问题,当你注入完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);";
IOS中也一样,按照同样的思路然后在-(void)webViewDidFinishLoad:(UIWebView *)webView 中使用[webView stringByEvaluatingJavaScriptFromString:@”xxx”];即可 。
阅读全文
0 0
- Android webView js问题
- Android使用WebView中的js跳转问题
- WebView中JS混淆问题-Android
- android webview无法响应网页js问题
- webview js 交互问题
- android WebView js 交互
- js android webview
- Js 与Android WebView
- android webview js交互
- android、webview、js交互
- Android webview,js,属性
- android webview js
- android js webview 互调
- android webview js 交互
- android webview js 交互
- android-webview执行js
- android webview 执行js
- Android webview 注入JS
- <iOS开发>之类型转换
- SpringBoot使用logback输出日志并打印sql信息
- MySQL使用索引的场景及真正利用索引的SQL类型
- java使用freemarker模板导出word(带有合并单元格)文档
- Java数据结构——Stack和父类Vector
- Android webView js问题
- ELK错误1_Kafka->Logstash->Elasticsearch过程,Elasticsearch报grokparsefailure错误
- hibernate之cretiria,hql,本地sql基本使用
- 1 Tow Sum
- 测试Maxscript中对材质进行序列命名
- android6.0 动态申请权限
- Google Android Developer
- IntentService是如何在子线程运行的。
- 可展开的TextView