我正在使用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>
任何想法,请
答案 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';});