【Android】webview javascript 注入方法
来源:互联网 发布:混合蛙跳算法有什么用 编辑:程序博客网 时间:2024/06/06 00:31
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中加入<script>便签,并包含要注入的js的Url地址,如下:
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之后你想要立即调用其中的方法,第一种方法没问题可以调用到。但是第二种方法中,你要确保注入的<script>便签对应的js文件加载完才可调用成功。
解决:在第二种方法中为加入script标签添加onload事件,确保该script已加载完成。代码可更改如下:
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 javascript 注入方法
- 【Android】webview javascript 注入方法
- webview javascript 注入方法
- webview注入js方法
- Android webview 注入JS
- Android 防止webview 注入
- 【android】【webview】【资源】【注入】
- 向WebView中注入JavaScript
- WebView 中的 JavaScript 调用 Android 的方法
- 使用WebView中的JavaScript调用Android方法
- webView中JavaScript调用Android方法
- Android WebView JS的注入
- WebView调用Javascript方法
- Android Webview和JavaScript交互--JS调用Android方法
- ANDROID WEBVIEW和JAVASCRIPT交互_JS调用ANDROID方法
- Android 使用WebView中的JavaScript调用Android方法
- WebView注入Javascript的版本兼容问题
- Android webview app 直接使用注入 javascript 解决中文输入问题
- 比较15个数的大小
- 20160324.2
- 比较15个数的大小1
- 2016.3.24(2)
- 《2015年中国邮件营销行业数据报告》
- 【Android】webview javascript 注入方法
- ZOJ 3846GCD Reduce(数学)
- 来段代码提提神-Java读取config.properties文件中的key=value
- vb作业
- C++学习笔记2——对象数组与对象指针
- Litepal创建表时报错 an exception that indicates there was an error with sql parsing or execution
- FFmpeg深入分析之零-基础
- 3个数排序
- VB-排序题