JavaScript使用Android webview获取所有类名文本

JavaScript get all class names text using Android webview

本文关键字:文本 获取 使用 Android webview JavaScript      更新时间:2023-09-26

我试图通过这样做从类中获取文本:

 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

?

我想获得所有类名的文本,但我不知道如何做到这一点。什么好主意吗?我很感激你的帮助。谢谢!

完全正确——你得到了你想要的:)

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>' }, " +      
    "    '')" + 
    ");");