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

时间:2017-03-17 15:03:34

标签: javascript android webview wikipedia

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

问题是它们是以扩展模式加载的,这使得页面读取时间很长。

我启用了javaScript。

有可能这样做吗?

感谢。

2 个答案:

答案 0 :(得分:0)

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

网络版:  " https://en.wikipedia.org/wiki/Believe"

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

正如你所看到的那样,只需附加" .m"到维基网址。

答案 1 :(得分:0)

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

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

这是JavaScript代码,用于在类名末尾添加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";
    }
}

这是用于更改android上的Web视图的Java代码:

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代码。