我在 Android 的 WebView 中的特定命名 anchor 上打开本地存储的页面时遇到兼容性问题。目前我只是简单地使用
webView.loadUrl("file:///android_asset/page.html#fragment");
这在我的 4.1 设备上运行良好,但其他设备的用户一直提示它无法运行。
例如在 4.0.3 打开页面时没有 url fragment #fragment
部分打开正常,但用户收到“网页不可用”错误。
我还尝试通过两次调用 loadUrl(String)
方法来打开 fragment ,首先不调用 fragment ,然后调用 fragment 。还使用 JavaScript 更改页面的位置。
我还能尝试什么?
最佳答案
首先,RFC 1738没有为 file://
方案指定 URL fragment 部分。文件 URI 由 file://
、主机名和路径组成——仅此而已。
因此,文件 URI 中的 anchor 不应被支持。但出于某种原因,Android 从 Jelly Bean 开始就支持它们。如果您希望他们也参与制作 Ice Cream Sandwich :
private static String BASE_URL = "file:///android_asset/";
mWebView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
try {
if (url.startsWith(BASE_URL) && url.contains("#")) {
url = url.replace(BASE_URL, "");
InputStream is = getAssets().open(url.substring(0, url.indexOf("#")));
return new WebResourceResponse("text/html", "utf-8", is);
}
} catch(IOException e) {
Log.e("DKDK", "shouldInterceptRequest", e);
}
return null;
}
});
关于android - 如何滚动到 WebView url 中的命名 anchor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115798/