如何在WebView中加载Javascript
我已经使用如何在WebView中加载Javascript,javascript,android,webview,android-webview,inject,Javascript,Android,Webview,Android Webview,Inject,我已经使用WebView.loadUrl()在Android WebView中加载了我的网页,我正在尝试使用WebView.evaluateJavascript()将Javascript注入WebView 但这里的问题是,Javascript在远程位置/url中可用。我想从远程位置获取javascript并将其注入WebView 我已经搜索了与此问题相关的内容,但我只找到了从字符串加载的内容。要启用javascript,请尝试以下操作 WebView myWebView = (WebView)
WebView.loadUrl()
在Android WebView中加载了我的网页,我正在尝试使用WebView.evaluateJavascript()
将Javascript注入WebView
但这里的问题是,Javascript在远程位置/url中可用。我想从远程位置获取javascript并将其注入WebView
我已经搜索了与此问题相关的内容,但我只找到了从字符串加载的内容。要启用javascript,请尝试以下操作
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView .loadUrl("url");
要从远程位置获取javascript,请参见以下操作:
private static class WC extends WebViewClient {
Handler handler1 = null;
WebView webView = null;
byte[] b = null;
public WC(Handler handler, WebView webView) {
this.handler1 = handler;
this.webView = webView;
}
@Override
public void onPageFinished(final WebView view, String url) {
super.onPageFinished(view, url);
new Thread(new Runnable() {
@Override
public void run() {
try {
injectScriptFromNetWork("http://192.168.216.254:4000/test.js");
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
private void injectScriptFromNetWork(String urlStr) throws IOException {
URL url = new URL(urlStr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
int code = urlConnection.getResponseCode();
if (code == 200) {
InputStream inputStream = urlConnection.getInputStream();
b = new byte[inputStream.available()];
inputStream.read(b);
}
handler1.post(new Runnable() {
@Override
public void run() {
String jsSource = Base64.encodeToString(b, Base64.NO_WRAP);
webView.loadUrl("javascript:(function() {" +
"var parent = document.getElementsByTagName('head').item(0);" +
"var script = document.createElement('script');" +
"script.type = 'text/javascript';" +
"script.innerHTML = window.atob('" + jsSource + "');" +
"parent.appendChild(script)" +
"})()");
}
});
}
}
MainActivity.java代码如下:
handler = new Handler(getMainLooper());
webView.setWebViewClient(new WC(handler, webView));
webView.loadUrl("file:///android_asset/index.html");
原谅我,这是我第一次回答有关stackoverflow的问题。您需要使用类似okhttp1)的http库自己下载它。从
远程位置/url获取Javascript。
2)注入它。因此用户总是尝试改进,无需道歉。您可以访问StackOverflow行为准则,了解如何编写良好的问题/答案。您的答案主要是基于代码的。试着解释它,而不是只给出一个代码片段。这将有助于社区今后的参考。