如果webview网页里面是异步加载的图片怎么获取呢
时间: 2024-02-26 12:57:50 浏览: 103
Listview从Json文件异步加载图片点击可跳转网页
5星 · 资源好评率100%
如果WebView网页中的图片是通过异步加载的方式获取的,那么在`onPageFinished()`方法中获取图片地址时可能会出现获取不到全部图片的情况。这时可以通过以下方法获取异步加载的图片:
1. 在WebView的`addJavascriptInterface()`方法中注册一个Java对象,用于接收图片地址:
```
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void processImage(String imgSrc) {
// 处理图片地址
// ...
}
}, "app");
```
2. 在网页中添加JavaScript代码,将异步加载的图片地址通过Java对象传递给Android:
```
function findImages() {
var imgs = document.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
var img = imgs[i];
if (!img.src) {
var src = img.getAttribute('data-src');
if (src) {
app.processImage(src);
}
}
}
}
findImages();
```
这段JavaScript代码会遍历所有的图片元素,如果图片的src属性为空,就去查找data-src属性,如果找到就通过Java对象传递给Android。
3. 在WebView的`onPageFinished()`方法中调用JavaScript代码:
```
webView.loadUrl("javascript:findImages()");
```
这样就可以获取到所有的图片地址,包括异步加载的图片地址。需要注意的是,为了避免JavaScript注入漏洞,应该对传递给Java对象的参数进行过滤和校验。
阅读全文