Есть ли способ скрыть элементы от веб-просмотра? (Андроид) - PullRequest
13 голосов
/ 13 июня 2010

Есть веб-страница, которую я открываю с веб-просмотром, однако я хотел бы скрыть 1 текстовую ссылку вверху.Есть ли способ сделать это?Ссылка находится в теле, поэтому я не могу скрыть элемент тела в целом.На веб-странице есть весь текст и одно крошечное изображение внизу, но текст генерируется каждый раз, когда вы его загружаете, поэтому я не могу просто скопировать / вставить тело.

Спасибо

Ответы [ 3 ]

21 голосов
/ 06 августа 2015
final 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);
6 голосов
/ 13 июня 2010

Я понял! При введении JavaScript мне пришлось использовать

webview.loadUrl ( "JavaScript: (функция () {"+ «Document.getElementsByTagName ( 'а') [0] .style.display = 'нет'; "+ "}) ()");

Это удаляет ссылку (код). Замена ('a') на ('img') приведет к удалению изображений.

(спасибо lexanderA - Внедрение JavaScript в WebView )

0 голосов
/ 08 июня 2019

Я использую WebViewSuite

и реализовать это

webViewSuite = findViewById(R.id.webViewSuite);
webViewSuite.startLoading("https://example.com/blog/");

и добавили customizeClient в WebViewSuite

webViewSuite.customizeClient(new WebViewSuite.WebViewSuiteCallback() {
      @Override
      public void onPageStarted(WebView view, String url, Bitmap favicon) {
      }

      @Override
      public void onPageFinished(WebView view, String url) {
        hideSomeSectionOfBlog(view);
      }

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

и использовать функцию, чтобы скрыть элементы

 private void hideSomeSectionOfBlog(WebView view) {
    view.getSettings().setJavaScriptEnabled(true);
    view.loadUrl("javascript:(function() { " +
      "document.getElementById('Top_bar').style.display='none';" +
      "document.getElementById('Filters').style.display='none';" +
      "document.getElementById('Footer').style.display='none';" +
      "document.getElementsByClassName('Header').style.display='none';" +
      "})()");
  }

Надеюсь быть полезным

Примечание: , если идентификатор не существует. JavaScript возвращает ошибку. пример, если фильтры не существуют id, нижний колонтитул и верхний колонтитул не отображают = 'none' Если вы не доверяете Отделить, как это

view.loadUrl("javascript:(function() { " +
      "document.getElementById('Footer').style.display='none';})()");
view.loadUrl("javascript:(function() { " +
      "document.getElementById('Header').style.display='none';})()");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...