javascript - 如何在Android中捕获当前屏幕第一行的文本?

标签 javascript java android android-layout webview

我的项目是一个电子书阅读器应用程序。屏幕上只有一个 VebView 并从 html 文件获取数据。它只有文本内容。我需要在当前屏幕的第一行获取文本。在下一步中,我需要在文档中查找文本并获取文本在屏幕上的位置。最后,我需要滚动找到的位置。解决该问题所需的所有内容:( WebView Text Zoom Issue in Android )

html内容:

<!DOCTYPE html>

    <head>
        <style type="text/css"> 
            p{} p.x1{} p.x2{} p.x3{} p.x4{} 
            h2.x1{} h2.x2{} h2.x3{} h2.x4{}
        </style>
    </head>

    <body>

        //paragraph-1
        <p class="x1">Title-1</p>
        <p class="x2">Title-2</p>
        <p class="x3">Title-3</p>
        <p class="x4">Title-4</p>
        <p>Text content.</p>


        //paragraph-2
        <h class="x1">Title-1</p>
        <h class="x2">Title-2</p>
        <p>Text content.</p>


        //paragraph-3
        <h class="x3">Title-1</p>
        <h class="x4">Title-2</p>
        <p class="x3">Title-3</p>
        <p>Text content.</p>


        //paragraph-4
        <h class="x2">Title-1</p>
        <p class="x3">Title-2</p>
        <p>Text content.</p>


        //...

    </body>

</html>

最佳答案

我想您正在寻找这个?

function findTopObject (elements) {
    var top = Number.POSITIVE_INFINITY;
    var obj = null;

    Array.from(elements).forEach(function (o) {
        var t = o.getBoundingClientRect(o).top;
        if (t > 0.0 && top > t) {
            obj = o;
            top = t;
        }
    });

    return obj;
}

for (var i = 0; i < 1000; i++) {
  var p = document.createElement("p");
  p.innerText = "Line " + i;
  document.body.appendChild(p);
}

var elements = document.querySelectorAll("p");
var obj = null;

window.onscroll = function() {
  if (obj != null) {
    obj.style.backgroundColor = "";
  }

  obj = findTopObject(elements);

  if (obj != null) {
    obj.style.backgroundColor = "red";
  }
};

function findTopObject(elements) {
  var top = Number.POSITIVE_INFINITY;
  var obj = null;
  Array.from(elements).forEach(function(o) {
    var t = o.getBoundingClientRect(o).top;
    if (t > 0.0 && top > t) {
      obj = o;
      top = t;
    }
  });
  return obj;
}
<body></body>

关于javascript - 如何在Android中捕获当前屏幕第一行的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36381742/

相关文章:

java - 使用滚动 Pane javafX 时出现空指针异常

Android 设计支持库二级抽屉菜单

android - 如何将手势检测器设置为 YoutubePlayerFragment

javascript - 在 javascript 代码中使用 ASP.net 模型。除了使用 <text> 之外还有其他方法吗?

java - 如何将 SourceDataLine 的内容写入文件?

java - Spring JPA Repository 动态查询

android - Gradle 构建在 Android Studio 中失败

Javascript 将二维数组转换为对数组

javascript - Safari 刷新阻止 jQuery 执行

javascript - 输出元素的所有设置属性