Android webView 维基百科部分已加载展开

Android webView Wikipedia sections are loaded expanded

我希望在打开网页时关闭这些部分,如下所示:

问题是它们是以扩展模式加载的,这使得页面阅读起来很长。

我启用了javaScript。

这可以吗?

谢谢。

是的,维基百科有自己的移动版本。下面是例子

网页版: “https://en.wikipedia.org/wiki/Believe

手机版" “https://en.m.wikipedia.org/wiki/Believe

如您所见,只需将“.m”附加到 wiki url。

您需要修改 HTML 中部分的 class 名称。
Wikipedia's help section 中,您可以阅读有关默认情况下折叠表格的信息。它与您要求的非常相似,唯一的区别是您需要为可折叠标题和可折叠块实现它,以便默认情况下隐藏这些部分。
通过查看页面的源代码,您可以看到要修改的区域的 class 名称。它们的标题称为 section-heading in-block collapsible-heading,内容称为 mf-section-1 collapsible-block(每个部分的编号不同)。您需要在 class 名称的末尾添加 close-block,这将满足您的要求。

通过使用以下代码,您将能够修改您的网络视图。

这是 JavaScript 代码,用于在 class 名称末尾添加 close-block

var heading = document.getElementsByClassName("collapsible-heading");
for (var i = 0; i < heading.length; i++) {
    if(heading[i].classList.contains("open-block")) {
        heading[i].className = heading[i].className.replace("open-block", "close-block");
    }
    else {
        heading[i].className+= " close-block";
    }
}
var section = document.getElementsByClassName("collapsible-block");
for (var i = 0; i < section.length; i++) {
    if(section[i].classList.contains("open-block")) {
        section[i].className = section[i].className.replace("open-block", "close-block");
    }
    else {
        section[i].className+= " close-block";
    }
}

这是 Java 代码,用于更改 android 上的网络视图:

WebView myWebViewDisply = (WebView) findViewById(R.id.WebViewDisply);
myWebViewDisply.getSettings().setJavaScriptEnabled(true);
myWebViewDisply.setWebViewClient(new WebViewClient() {

String jsFunction=new StringBuilder()
                .append("var heading = document.getElementsByClassName(\"collapsible-heading\");\n")
                .append("for (var i = 0; i < heading.length; i++) {\n")
                .append("if(heading[i].classList.contains(\"open-block\")) {\n")
                .append("heading[i].className = heading[i].className.replace(\"open-block\", \"close-block\");\n}\n")
                .append("else {\n")
                .append("heading[i].className+= \" close-block\";\n}\n}\n")
                .append("var section = document.getElementsByClassName(\"collapsible-block\");\n")
                .append("for (var i = 0; i < section.length; i++) {\n")
                .append("if(section[i].classList.contains(\"open-block\")) {\n")
                .append("section[i].className = section[i].className.replace(\"open-block\", \"close-block\");\n}\n")
                .append("else {\n")
                .append("section[i].className+= \" close-block\";\n}\n}\n")
                .toString();

@Override
public void onPageFinished(WebView view, String url) {
    myWebViewDisply.loadUrl("javascript:(function(){"+jsFunction+"})()");
    }
});
myWebViewDisply.loadUrl(youUrl);

请注意,您只需将 Java 代码复制到您的项目。
JavaScript代码是我单独写的 为了便于阅读,Java 代码在其中包含所需的 JavaScript 代码。