如何在WebView中隐藏网站的元素

时间:2018-08-13 12:07:50

标签: javascript android html android-webview

我正在android studio中使用webview,我想加载我的网站,但我也想隐藏一些元素(因为它是移动版本)。
是否可以通过android webview通过某种方式实现?

2 个答案:

答案 0 :(得分:0)

通过在WebView中执行JavaScript函数,可以在WebView中隐藏网站的元素。我将发布youtube教程的链接,该链接将消除您的困惑,即如何获取元素ID然后隐藏。我强烈建议您观看该教程,但该教程使用的是北印度语。您只需看一下就可以了解核心概念。

Youtube教程:Click here

这是在WebView中执行JavaScript函数的一个小示例。

    WebView webview = (WebView)findViewById(R.id.browser);  
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient() {
     @Override
    public void onPageFinished(WebView view, String url)
    {
        // hide element by class name
        webview.loadUrl("javascript:(function() { " +
                "document.getElementsByClassName('your_class_name')[0].style.display='none'; })()");
        // hide element by id
        webview.loadUrl("javascript:(function() { " +
                "document.getElementById('your_id').style.display='none';})()");

    }
    });

webview.loadUrl(url);

答案 1 :(得分:0)

您应该从Webview外部获取源html,然后将其解析为原始数据,修改所需内容,然后将处理后的html赋予Webview。

从网址获取html数据:

HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client
HttpGet httpget = new HttpGet("http://yoururl.com"); // Set the action you want to do
HttpResponse response = httpclient.execute(httpget); // Executeit
HttpEntity entity = response.getEntity(); 
InputStream is = entity.getContent(); // Create an InputStream with the response
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) // Read line by line
    sb.append(line + "\n");

String resString = sb.toString(); // Result is here

is.close(); // Close the stream

获取html后,将要删除的元素删除并将该html传递给Webview。