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
代码。
我希望在打开网页时关闭这些部分,如下所示:
问题是它们是以扩展模式加载的,这使得页面阅读起来很长。
我启用了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
代码。