#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");