webView中对html页面删除部分布局及相关操作
类似的文章网上很多,但是很多都讲在
onPageFinished(WebView view, String url)
中加入js语句就行。亲测,很多情况下并不会生效。原因是不在ui线程,而且这种情况下也并不会报错,只是看不到效果罢了。
所以正确的方式是在方法中用
runOnUiThread或者handler去修改
@Override public void onPageFinished(WebView view, String url) { activity.runOnUiThread(new Runnable() { @Override public void run() { // mWebView.loadUrl("javascript:" + "var element=document.getElementsByClassName(\"title\")[0];\n" + webView.loadUrl("javascript:" + "var element=document.getElementById(\"foot-lib2\");\n" + "element.parentNode.removeChild(element);"); webView.setVisibility(View.VISIBLE);//对webview进行去除菜单栏处理后显示 } }); super.onPageFinished(view, url); }
js思路就是获取获取dom节点进行操作,如何获取dom元素相关内容转入一篇文档如下:
我们通过Document对象至少有三种方式获取DOM元素,分别为:
document.getElementById();
document.getElementsByTagName();
document.getELementsByClassName();
document.getElementById():根据页面标签的唯一id来获取,返回的是一个对象,自然可以调用对象的方法,例如:children。
document.getElementsByTagName():看到elements就知道这个获取的是多个对象,所以返回的是对象的集合,哪怕只有一个一个对象,也会返回长度为1的数组,只能通过索引返回对象调用对象的方法。
document.getELementsByClassName('xxx'):这个跟上面一个类似,返回的也是数组,但是需要注意的是,它会返回所有包含xxx或者只有xxx的标签的数组。
下面通过一个例子演示一下:
<div id="test-div">
<div class="c-red">
<p id="test-p">JavaScript</p>
<p>Java</p>
</div>
<div class="c-red c-green">
<p>Python</p>
<p>Ruby</p>
<p>Swift</p>
</div>
<div class="c-green">
<p>Scheme</p>
<p>Haskell</p>
</div>
</div>
1 .选择<p>JavaScript</p>:
刚好这个p标签里就有id,那么就直接获取
document.getElementById('test-p');
2 . 选择<p>Python</p>,<p>Ruby</p>,<p>Swift</p>:
①:var arr=document.getElementById(‘test-div’).getElementsByTagName(‘div’)[1].children;
②:var arr=document.getElementsByClassName(‘c-red’)[1].children;
3 .选择<p>Haskell</p>:
var x=document.getElementsByClassName(‘c-green’)[1].children[1]
------The End--------记录完毕 ~嘤嘤嘤乀(ˉεˉ乀)