我试图通过这样做从类中获取文本:
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
myWebView.setWebViewClient(null);
myWebView.loadUrl("javascript:window." +
"HTMLOUT.processHTML('<div>'+document.getElementsByClassName('text Phil-1-3')[1].innerHTML+'</div>');");
}
});
myWebView.loadUrl("https://www.biblegateway.com/passage/?search=Philippians+1%3A3&version=ESVUK");
但是它只获取第一个元素。我想是因为
[0].innerHTML
?
我想获取所有类(class)名称的文本,但我不知道如何做到这一点。有任何想法吗?我将非常感谢您的帮助。谢谢!
最佳答案
没错——你得到了你想要的:)
getElementsByClassName
返回一个“类似数组的对象”,您可以使用 Array.reduce
函数来迭代其元素并连接它们的 innerHTML
s:
Array.prototype.reduce.call(
document.getElementsByClassName('...'),
function(a, b) { return a + '<div>' + b + '</div>' },
'');
应用于您的示例:
myWebView.loadUrl("javascript:window." +
"HTMLOUT.processHTML(" +
" Array.prototype.reduce.call(" +
" document.getElementsByClassName('text Phil-1-3'), " +
" function(a, b) { return a + '<div>' + b + '</div>' }, " +
" '')" +
");");
关于JavaScript 使用 Android webview 获取所有类名文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31693024/