如何在android WebView中动态更改元素的显示?

时间:2017-03-19 20:19:31

标签: javascript android html webview

我在Android中有一个WebView。我从url加载webview中的页面,我想隐藏网页实际上有的一些元素。页面加载后我就做了。它只给了webview中的'none'文本。我尝试如下

@Override
public void onPageFinished(WebView view, String url) {
    view.loadUrl("javascript:window.document.getElementsByClassName('cdo-search')[0].style.display='none';");
    if (pd.isShowing()) {
         pd.dismiss();
    }
}

我们如何隐藏网页实际拥有的元素?

1 个答案:

答案 0 :(得分:0)

我之前的回答不是这样。经过测试,我发现这解决了这个问题。问题不在于android或webview。这是基于网址的javascript执行的方式。

@Override
public void onPageFinished(WebView view, String url) {
    view.loadUrl("javascript:function a(){window.document.getElementsByClassName('cdo-search')[0].style.display='none';}; a()");
    if (pd.isShowing()) {
         pd.dismiss();
    }
}

我不完全确定是什么原因,但如果我不得不猜测,你用这种格式写的语句返回的是undefined之外,将被设置为文档的html。

换句话说,在以这种格式执行JS时,不能在外部作用域中进行任何类型的赋值操作。

我的测试方法:

我将这两个放在这个特定的堆栈溢出页面的地址栏中。

javascript:function a(){window.document.getElementsByClassName('question-hyperlink')[0].style.display='none';}; a()

javascript:window.document.getElementsByClassName('question-hyperlink')[0].style.display='none';

在第一次尝试中,qustion按预期消失,但在第二次尝试中,页面变为“无”。