从webview android加载的url中删除div标签

时间:2014-02-03 09:59:35

标签: android webview android-webview

我正在使用web.loadUrl(url);将网址加载到webview中。现在我想在网址加载完毕后删除部分正文内容。

来自网址的数据如下:

<html>
<body>
<div class="header" data-role="header" data-theme="a"> 
 <a data-icon="back" class="header-icon" data-iconpos="notext" href="mymob-web-mobile/restricted/menu.xhtml" data-ajax="false"> <span>Back</span> </a> 
  <!--Title--> 
 <h1>???help.main.title???</h1> 
 </div> 

<div id="well">Hello World</div>
<body>
</html>

我想在网址

中删除此部分
<div class="header" data-role="header" data-theme="a"> 
 <a data-icon="back" class="header-icon" data-iconpos="notext" href="mymob-web-mobile/restricted/menu.xhtml" data-ajax="false"> <span>Back</span> </a> 
  <!--Title--> 
 <h1>???help.main.title???</h1> 
 </div> 

经过一番研究后,我来到这个解决方案:

web= (WebView)findViewById(R.id.web);

        web.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url)
            {
                web.loadUrl("javascript:var con = document.getElementByTagName('<div class=\"header\" data-role=\"header\" data-theme=\"a\"> '); " +
                        "con.style.display = 'none'; ");
            }
        });


        web.clearCache(true);
        web.clearHistory();
        web.getSettings().setJavaScriptEnabled(true);
        web.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        web.loadUrl(Constant.URL_AIDE, headers);

但是没有删除div元素。

夏季是,div删除

<div class="header" data-role="header" data-theme="a"> 
 <a data-icon="back" class="header-icon" data-iconpos="notext" href="mymob-web-mobile/restricted/menu.xhtml" data-ajax="false"> <span>Back</span> </a> 
  <!--Title--> 
 <h1>???help.main.title???</h1> 
 </div> 

预期结果

<html>
<body>


<div id="well">Hello World</div>
<body>
</html>

任何想法,请

2 个答案:

答案 0 :(得分:3)

您可以使用getElementsByClassName()来访问div。这是我的解决方案,请尝试一下。

web.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url){

            web.loadUrl("javascript:document.getElementsByClassName('header')[0].style.display=\"none\";");

        }
    })

答案 1 :(得分:0)

您的JavaScript不正确。除了getElementByTagName其他getElementById函数之外,没有getElements...这样的函数返回节点列表。它应该是这样的:

[].slice.call(document.getElementsByClassName("header")).forEach(function(element) {element.style.display = 'none';});