android 隐藏webview地址栏,webView通过loadUrl()加载js隐藏部分HTML标签遇到的坑

这几天在写webView的时候,遇到了一个坑。需求是这样的,webView加载HTML的时候,只显示部分需要的内容。

这里测试的是百度的搜索引擎。然而这里有个很重要的区别点。先放连接上来对比下:

de6ae1f4ec8c

图1

de6ae1f4ec8c

图2

通过以上图1和图2的对比我们可以看到一个明显的区别。就是两个连接的显示会有明显的变化。看到源码,头部的标签的id和class也不一样。这个地方需要特别注意。

不然后面用loadurl加载js隐藏头部的时候时,得到的对象时空的,根本找不到对应的标签。

之前一直在找的问题就是,webView加载的时连接2(图2)的显示。但是找标签一直是按连接1(图1)的id/class去找对应的标签。

找到了问题所在,下面直接上代码:

编写js代码:(通过class遍历全局查找div)

javascript:function getClass(parent,sClass) {

var aEle=parent.getElementsByTagName('div');

var aResult=[];

var i=0;

for(i<0;i

if(aEle[i].className==sClass) {

aResult.push(aEle[i]);

}

};

return aResult;

}void(0) ";

通过调用getClass获取对应的标签:

javascript:function hideOther() {

getClass(document,'se-head-logo')[0].style.display='none';

getClass(document,'searchboxtop')[0].style.display='none'; getClass(document,'page-banner')[0].style.display='none';}

Android代码执行:

if(url!=null&&url.contains("baidu.com")){

String fun="javascript:function getClass(parent,sClass) { var aEle=parent.getElementsByTagName('div'); var aResult=[]; var i=0; for(i<0;i

view.loadUrl(fun);

String fun2="javascript:function hideOther() { getClass(document,'se-head-logo')[0].style.display='none';getClass(document,'searchboxtop')[0].style.display='none'; getClass(document,'page-banner')[0].style.display='none';}";

view.loadUrl(fun2);

view.loadUrl("javascript:hideOther();");

Log.d("aaa","进入执行");

}

问题2:隐藏代码正确,但隐藏不了。

在隐藏标签时,需要等页面加载完成才能隐藏,因此我们需要在WebViewClient工具类下的方法onPageFinished内执行上面的代码。(这里有个注意点:在这个方法内实现隐藏代码,在页面加载完成之前,我们还是可以看到隐藏部分的。等页面全部加载完成后,js隐藏代码才会执行。)

那么我们要想标签在加载的过程中就隐藏,那怎么做呢!这个时候WebChromeClient工具类提供 了一个方法onProgressChanged,就是页面加载进度的变化。我们可以在这个方法内再一次执行上面的js代码。

下面贴上代码实现截图:

de6ae1f4ec8c

onPageFinished方法

de6ae1f4ec8c

onProgressChanged方法

de6ae1f4ec8c

hideHtml方法

第一次写,对于问题的描述,和解决过程表达的不是很清楚。如果有什么不对的地方,请指正。谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值