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--------记录完毕           ~嘤嘤嘤乀(ˉεˉ乀)



猜你喜欢

转载自www.cnblogs.com/lucky-zhu/p/9593285.html