【发布时间】:2013-08-28 12:13:44
【问题描述】:
我有一个包含几个 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/
我怀疑这两者是否相关!
【问题讨论】: