我有一个包含几个 img 标签的 html 字符串,我将其传递给 webview 的loadDataWithBaseURL方法,例如
String data = "some html with <img> and <link>.....";
wview.loadDataWithBaseURL("http://dummy.baseurl/", data, "text/html", "UTF-8", null);
如果我不传递第一个参数 html 可以显示,但不会触发后续请求或 css 文件,这就是我传递虚拟 baseUrl 的原因。
当我尝试查看在shouldInterceptRequest () 下发出的请求时运行代码,如下所示
wview.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
String url) {
Log.d("url="+url, "resources");
....
}
});
我可以看到类似的输出
http://dummy.host.name/images/face.jpg 等
但是我的原始html在img src中包含“..”,就像<img src="../images/face.jpg">
麻烦是父目录(..)部分被webview忽略了
这个“..”对我来说很重要我不知道为什么它会跳过那部分
编辑
我正在从 zip 文件加载图像,所以在 shouldInterceptRequest() 中我可以放置必要的逻辑,但首先我应该有正确的 src。
我还注意到,如果将路径附加到 baseUrl,它们也会被忽略,例如
http://dummy.baseUrl/one/two/
变为(从请求日志中查看)
http://dummy.baseurl/
我怀疑这两个是否相关!