Android中向webview注入js代码可以通过webview.loadUrl("javascript:xxx")来实现,然后就会执行javascript后面的代码。
但是当需要注入一整个js文件的时候,需要先将js文件拼接到html文件后,在webview的onPageFinished方法中执行js代码注入。
第一种方法:
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();
在onPageFinished方法中执行
@Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); webview.loadUrl("javascript:" + wholeJS); }
第二种方法:
首先将js拼接到html里面,这里的js地址可以是网络的,也可以是本地的例如file:///android_asset/http://www.123.456/789.js ,或者网络的
String js = "var newscript = document.createElement(\"script\");"; js += "newscript.src=\"http://www.123.456/789.js\";"; js += "document.body.appendChild(newscript);";
在onPageFinished方法中执行
@Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); webview.loadUrl("javascript:" + js); }