gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:45:02 24 4
gpt4 key购买 nike

我的项目是一个电子书阅读器应用程序。屏幕上只有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com