Android WebView:仅显示网站的某些部分

问题描述 投票:0回答:2
java android android-webview
2个回答
11
投票

您可以通过扩展 WebViewClient 并注入一些 javascript 来呈现您的网页来实现此目的

public class MyWebClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}

@Override
public void onPageFinished(WebView view, String url) {
    view.loadUrl("javascript:your javascript");
}
}
.........
final MyWebClient myWebViewClient = new MyWebClient();
mWebView.setWebViewClient(myWebViewClient);

要隐藏元素,请使用

view.loadUrl("javascript:document.getElementById(id).style.display = 'none';)

更多信息 在 Android Webview 中,我可以修改网页的 DOM 吗?


3
投票

这里要理解的最基本的事情是我们在 Web html 文件中引用的元素是 class 还是 id。如果它是 id 那么

getElementById
就可以完美工作。如果是班级,则需要
getElementsByClassName

以下是我正在使用的示例。

myWebView.loadUrl
      ("javascript:(function() { " +
           "document.getElementsByClassName('header_wrapper')[0].style.display='none'; " +
           "document.getElementsByClassName('footer-contact')[0].style.display='none'; "+
           "document.getElementsByClassName('navbar-header')[0].style.display='none'; "+
           "document.getElementsByClassName('footer-social')[0].style.display='none'; "+
           "document.getElementById('footer_bottom').style.display='none'; "+
           "document.getElementById('footer_content').style.display='none'; "+
           "document.getElementById('core_mobile_menu').style.display='none'; "+
           "document.getElementById('catapult-cookie-bar').style.display='none'; "+
       "}
      )()");
© www.soinside.com 2019 - 2024. All rights reserved.