在JavaScript中,要获取点击事件相对于文本内容的位置,可以通过以下步骤实现:
clientX
和clientY
属性获取点击位置。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Click Position Relative to Text</title>
<style>
#text {
width: 300px;
border: 1px solid black;
padding: 10px;
}
</style>
</head>
<body>
<div id="text">This is a sample text to demonstrate the click position relative to the text content.</div>
<script>
document.getElementById('text').addEventListener('click', function(event) {
const range = document.caretRangeFromPoint(event.clientX, event.clientY);
if (range) {
const preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(this);
preCaretRange.setEnd(range.startContainer, range.startOffset);
const start = preCaretRange.toString().length;
console.log('Click position relative to text: ' + start);
} else {
console.log('Click was not on text.');
}
});
</script>
</body>
</html>
document.getElementById('text').addEventListener('click', function(event) {...});
event.clientX
和event.clientY
提供了点击位置相对于视口的位置。document.caretRangeFromPoint(event.clientX, event.clientY)
获取点击位置的文本范围。preCaretRange.cloneRange()
创建一个范围的副本。preCaretRange.selectNodeContents(this)
选择整个文本内容。preCaretRange.setEnd(range.startContainer, range.startOffset)
设置范围的结束位置为点击位置。preCaretRange.toString().length
计算点击位置相对于文本内容的位置。document.caretRangeFromPoint
可能返回null
。可以通过检查返回值来处理这种情况。document.caretRangeFromPoint
的支持可能有所不同。可以使用Polyfill或检查浏览器兼容性来处理。通过上述方法,可以在JavaScript中获取点击事件相对于文本内容的位置,并根据需要进行进一步处理。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云