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

Javascript 如何在android WebView中动态更改元素的显示?,javascript,android,html,webview,Javascript,Android,Html,Webview,我有一个Android的网络视图。我从url加载webview中的页面,我想隐藏该页面实际拥有的一些元素。我是在页面加载后做的。它在webview中只给了我“无”文本,仅此而已。我试了以下方法 @Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:window.document.getElementsByClassName('cdo-search')[0].sty

我有一个Android的网络视图。我从url加载webview中的页面,我想隐藏该页面实际拥有的一些元素。我是在页面加载后做的。它在webview中只给了我“无”文本,仅此而已。我试了以下方法

@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();
    }
}

我们如何隐藏网页中的元素呢?

我以前的答案不是。经过测试,我发现这解决了问题。问题不在于android或webview。这就是基于url的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();
    }
}
我不完全确定原因是什么,但如果我不得不猜测,以这种格式编写的语句返回的内容(未定义的除外)将被设置为文档的html

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

我的测试方法:

我把这两个放在这个特殊堆栈溢出页面的地址栏中

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

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


在第一次尝试中,问题如预期般消失,但在第二次尝试中,页面变成“无”

我相信web视图只是用来显示网页。如果网页需要动态,则必须使用其他web技术,如.Asp、.php、.jsp或其他JavaScript技术,以便在请求URL时动态填充网页。是的,您可以将数据作为字符串或其他帮助程序web客户端传递。前几段讨论WebView的功能和预期用例。我编辑了答案。你能确认这是否解决了你的问题吗