作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 webview.loadUrl()
将我的网页加载到 Android WebView 中,我正在尝试使用 webview.evaluateJavascript()
将 Javascript 注入(inject) WebView。
但这里的问题是,Javascript 在远程位置/url 中可用。我想从远程位置获取 javascript 并将其注入(inject) WebView。
我搜索了与此问题相关的内容,但我发现的都是从字符串加载。
最佳答案
你可以这样做:
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 上回答问题。
关于javascript - 如何在 WebView 中加载 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57862948/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!