要从浏览器自动换行后的HTML文本中提取每一行的内容,可以使用JavaScript结合DOM操作来实现。以下是一个基本的步骤和示例代码:
getClientRects()
方法获取每一行的矩形区域,从而确定换行位置。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Extract Lines from HTML</title>
<style>
#content {
width: 300px;
border: 1px solid #ccc;
padding: 10px;
}
</style>
</head>
<body>
<div id="content">
This is a long text that will be automatically wrapped by the browser.
Each line should be extracted separately.
</div>
<script>
function extractLines(element) {
const lines = [];
const text = element.innerText;
const rects = element.getClientRects();
let currentLineStart = 0;
for (let i = 0; i < rects.length; i++) {
const rect = rects[i];
const lineEnd = text.indexOf('\n', currentLineStart);
if (lineEnd === -1) {
lines.push(text.substring(currentLineStart));
break;
}
lines.push(text.substring(currentLineStart, lineEnd));
currentLineStart = lineEnd + 1;
}
return lines;
}
const contentElement = document.getElementById('content');
const lines = extractLines(contentElement);
console.log(lines);
</script>
</body>
</html>
<div>
元素,里面包含一段长文本,浏览器会自动换行。extractLines
函数接收一个HTML元素作为参数。getClientRects()
方法获取元素的每一行的矩形区域。lines
数组中并返回。getClientRects()
方法返回的矩形区域是基于当前视口的,因此如果页面布局发生变化(如窗口大小调整),可能需要重新计算。\n
),可以在提取时进行处理。通过这种方法,你可以准确地提取浏览器自动换行后的HTML文本的每一行内容。