java - 如何在 Android WebView 中仅显示网站的一部分

标签 java android webview webviewclient

如何在 Android WebView 中仅显示网站的一部分?

该网站的 HTML 代码包含一个应显示的 Head-Block 和一个 Body-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);

我想我必须在 onPageFinished-void 中的“webView1.loadUrl("") ”的参数中写一些东西,但我不确定。

预先感谢您的帮助

最佳答案

假设您有一个 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 函数首先隐藏所有表行。然后迭代您的数组,并使匹配的数组可见。

关于java - 如何在 Android WebView 中仅显示网站的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40679251/

相关文章:

android - pEntity 已有父级

android - Android多线程: What Can & Should Be Run in Parallel?

android - 将 PDF 加载到 Android webview 中

android - 使用 webview 显示地理位置

java - 为什么添加 Thread.sleep 会使我的 Akka TestKit 单元测试通过?

java - 如何通过 Java 使用 Bitpay

java - 打印一副牌,然后洗牌并重新打印

java - If 语句对象 boolean 值不起作用

android - 如何在 React Native 中提交文件?

javascript - Android webview 点击