如何在Android WebView中仅显示网站的一部分?
本网站的HTML代码包含一个应该显示的Head-Block和一个Body-Block,它主要存在一个每个表行的样式表:
<table class="VBlock">
<tr class="normal">
<th class="VBlock">Class</th>
<th class="VBlock">Lesson</th>
<th class="VBlock">Subject</th>
<th class="VBlock">represented by</th>
<th class="VBlock">Subject</th>
<th class="VBlock">Room</th>
<th class="VBlock">Notes</th>
</tr>
...
</table>
好吧,在WebView中,只应显示特定的表行。这应该取决于表格列的内容(注意:列中的单词不是最终的,只是想象的)
<th class="VBlock">Class</th>
与ArrayList比较。
我刚刚编写了以下代码,我部分地在网上搜索:
public void getWData(){
final WebView webView1 = (WebView) findViewById(R.id.webView1);
webView1.getSettings().setJavaScriptEnabled(true);
webView1.getSettings().setBuiltInZoomControls(true);
webView1.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
webView1.loadUrl("");
}
});
webView1.loadUrl(url);
我想我必须在&#34;的序列中写一些东西。 webView1.loadUrl(&#34;&#34;)&#34;在onPageFinished-void但我不确定。
提前感谢您的帮助
答案 0 :(得分:1)
假设您有一个ArrayList,其中包含一些值;
List<String> list;
您必须生成一个复杂的Javascript函数并在此处运行它。首先,您必须将ArrayList转换为字符串格式的Javascript列表,如下所示:
String listStr = "[";
for(int i=0; i<list.size(); i++){
listStr += list.get(i);
if(i!=list.size()-1)
listStr += ",";
}
listStr += "]";
在此代码部分的末尾,您已准备好在Javascript中使用的字符串格式列表。现在你必须修改onPageFinished中的loadUrl,如下所示:
String func = "javascript:(function() { " +
"var arrayList = " + listStr + ";" +
"var tableRows = document.getElementsByTagName('th');"
"for(var j=0; j<tableRows.length; j++){"+
"tableRows[j].style.visibility = 'hidden';"+
"};"+
"for(var i=0; i<arrayList.length; i++){"+
"for(var j=0; j<tableRows.length; j++){"+
"if(tableRows[j].innerHTML != arrayList[i]){"+
"tableRows[j].style.visibility = 'visible';"+
"}"+
"}"+
"}"+
"})()";
然后,您可以按如下方式运行此Javascript函数:
webView1.loadUrl(func);
基本上,这个javascipt函数首先隐藏所有表行。然后迭代你的数组,并使匹配的数组可见。
答案 1 :(得分:0)