Скрыть элементы веб-страницы в Android WebView

#javascript #android #webview

#javascript #Android #webview

Вопрос:

У меня есть приложение для Android, которое показывает страницу через webview. Но на веб-странице есть много элементов, которые я не хочу показывать, и именно поэтому я скрываю их следующим образом:

   webView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {

                super.onPageFinished(view, url);
               view.loadUrl ("javascript:(function() { " "document.getElementsByClassName('td-header-wrap td-header-style-1 ')[0].style.display='none'; "  "document.getElementsByClassName('td-fix-index ')[1].style.display='none';  " "document.getElementsById('td_uid_1_5ff8cc46439eb ')[0].style.display='none'; " "document.getElementsByClassName('td-fix-index ')[0].style.display='none';  " "document.getElementsByClassName('tdm-mobile-full')[0].style.display='none'; " "document.getElementsByClassName('td-fix-index ')[0].style.display='none'; " "} )()");

  }
 

Возможно ли, чтобы функция javascript указывала только то, что должно быть показано, а не указывала, что скрывать?

Могу ли я скрыть полное тело и показать только один элемент div? Я пробовал, но это не работает.

    view.loadUrl ("javascript:(function() { " "document.getElementsByClassName('body')[0].style.display='none'; "  "document.getElementsByClassName('td-fix-index ')[0].style.display='block';" "} )()");
 

Ответ №1:

Попробуйте это. Скройте body класс, а затем покажите нужный класс.

 view.loadUrl("javascript:(function(){var p=document.getElementsByClassName('body')[0];p.style.visibility='hidden';p.style.width=0;p.style.height=0;p.style.padding=0;p.style.margin=0;document.getElementsByClassName('td-fix-index')[0].style.visibility='visible';)();");
 

Вот формат JavaScript:

 (function() {
    var p = document.getElementsByClassName('body')[0]; 
    p.style.visibility='hidden';
    p.style.width=0;
    p.style.height=0;
    p.style.padding=0;
    p.style.margin=0;
    document.getElementsByClassName('td-fix-index')[0].style.visibility='visible';
)();
 

Комментарии:

1. Спасибо, но это не скрывает тело. Он скрывает тело, если я использую это (но он не показывает элемент div): view.loadUrl («javascript:(function() { » «document.getElementsByClassName(‘body’)[0].style.display=’none’; » «document.getElementsByClassName(‘td-fix-index’)[0].style.display=’блокировать’;» «} )()»);

2. Вам нужно, чтобы элемент body был полностью невидимым? Если да, то стиль по тегу или по классу?

3. В зависимости от вашего ответа это может сработать. var shown = document.getElementsByClassName('td-fix-index')[0].outerHTML; var hidden =  document.getElementsByClassName("body")[0]; hidden.outerHTML = shown; hidden.setAttribute("class", "different");