【发布时间】:2015-06-07 18:38:53
【问题描述】:
我有一个名为 downloadapp 的 div,我想向使用智能手机浏览器而不是使用我的 Android 应用程序访问我的网站的用户显示它。所以我需要为已经使用我的应用的用户隐藏该 div。
首先我使用了onPageStarted 和onPageFinished,但访问者在它消失之前一直看到 div 几秒钟。然后有人建议我在应用程序的用户代理字符串中添加一个识别字符串(例如:“我的应用程序”),结果如下。不幸的是,我的应用程序中的 div 仍然不会从一开始就消失,所以我在这里错过了什么?
网页的html+js代码:
<head>
<script>
if (navigator.userAgent.endsWith("myapp")) {
document.getElementById("downloadapp").style.display = "none";
} else {
document.getElementById("downloadapp").style.display = "inherit";
}
</script>
</head>
<body>
<div id="downloadapp">
<a href="market://details?id=example"><img src="/example.png"></a>
</div>
</body>
代码 Android Webview:
private void startWebView(String url) {
webView.getSettings().setUserAgentString(webView.getSettings().getUserAgentString() + "; myapp");
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
//On error, open local file
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
webView.loadUrl("file:///android_asset/www/myerrorpage.html");
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.loadUrl("javascript:document.getElementById('downloadapp').style.display = 'none'; void(0);");
}
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:document.getElementById('downloadapp').style.display = 'none'; void(0);");
}
});
webView.loadUrl(url);
}
【问题讨论】:
-
如果你让 div 默认隐藏,然后如果 userAgent 不是来自你的应用程序显示呢?
标签: javascript android android-webview user-agent getelementbyid