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

标签 javascript android android-webview

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

 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 函数来迭代其元素并连接它们的 innerHTMLs:

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/

相关文章:

javascript - 如何通过添加类似于++ 的函数来扩展 TypeScript 中的 Number

android - ListItem 中的 WebView -> 项目不可点击 |安卓

Javascript Canvas 仅将图像绘制到缓冲区

javascript - jQuery Promise() 超出了最大调用堆栈大小

android:contentInsetLeft ="0dp"与 app:contentInsetLeft ="0dp"

android - 手机大小的应用程序的所有 fragment ?

java - Google Play 游戏服务 : Writing saved games

android - 将 javascript 添加到 WebView

android - Webview 导致 ANR

javascript - 从一个 Waypoints.js 构造函数动态定位多个 HTML 元素