【问题标题】:Add identifying string into user agent string to hide div only in Android app将标识字符串添加到用户代理字符串中以仅在 Android 应用中隐藏 div
【发布时间】: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().getUserAgentStri‌​ng() + "; 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


【解决方案1】:

您在设置用户代理时犯了错误。替换这个:

webView.getSettings().setUserAgentString(webView.getSettings().getUserAgentStri‌​ng() + "; myapp");

有了这个

webView.getSettings().setUserAgentString("myapp");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多