因此,我正在应用程序的 webview 中加载一个网页,其中有一个 HTML i class="img profimage"
,它有一个背景图像 url,这就是我的目标...
我想使用 JavaScript 或使用 Jsoup 来获取该目标...
到目前为止我对 Jsoup 的尝试是这样的:
public class GetImage extends AsyncTask<String, String, String> {
protected String doInBackground(String... strings) {
Document document = null;
try {
document = Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
String temp = document.select("i.img.profpic").first().getElementsByAttribute("style").toString();
return temp.substring(temp.indexOf("(") + 1, temp.indexOf(")"));
}
protected void onPostExecute(String result) {
Log.d("ChatScreen", result);
Toast.makeText(ChatScreen.this, result, LENGTH_SHORT).show();
}
}
但是我得到了 NPE...
我不知道如何使用 JavaScript 获取 i class 的背景图像 url...我可以在网络上找到大量示例,了解如何为 div
获取它使用ids
页面的 HTML 结构类似于:
<div ....>
<div ....>
<i class="img profimage" style="background-image: url("url here");"/>
</div>
</div>
最佳答案
检查this Answer也许这会起作用,但我没有尝试过。 JS 函数编写在 evaluateJavascript() 中,它将读取样式属性,然后您可以使用 substring 方法来获取 URL。
webview.evaluateJavascript(
"(function() { return (document.getElementsByTagName('i')[index].getAttribute('style')); })();",
new ValueCallback<String>() {
@Override
public void onReceiveValue(String html) {
Log.d("HTML", html);
// now use substring to get url.....
}
});
希望这对您有帮助。
关于JavaScript/Jsoup - 从 "i class"获取背景图像 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41882324/