我在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();
}
}
我们如何隐藏网页实际拥有的元素?
答案 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按预期消失,但在第二次尝试中,页面变为“无”。