Javascript 在html中的屏幕坐标(x,y)处选择单个单词

Javascript 在html中的屏幕坐标(x,y)处选择单个单词,javascript,jquery,ios,Javascript,Jquery,Ios,我想知道是否有办法通过提供屏幕坐标(x,y)来选择HTML中的单个单词。基本上,我希望有一个自定义的window.getSelection,但不是由光标(或触摸)触发,而是一个(x,y)点作为输入。谢谢。一个基本解决方案可能是这样的: (单词的检测严格基于一个空格“”) 仅用于演示目的,编码字符和非字母字符在此超出范围 var$j=function(val,space){return JSON.stringify(val',space | |'''); var$l=function(val){

我想知道是否有办法通过提供屏幕坐标(x,y)来选择HTML中的单个单词。基本上,我希望有一个自定义的window.getSelection,但不是由光标(或触摸)触发,而是一个(x,y)点作为输入。谢谢。

一个基本解决方案可能是这样的:
(单词的检测严格基于一个空格“”)
仅用于演示目的,编码字符和非字母字符在此超出范围

var$j=function(val,space){return JSON.stringify(val',space | |''');
var$l=function(val){document.body.insertAdjacentHTML('beforeend',''+val+'');
$lj=函数(val,space){$l($j(val,space));};
函数getWordAtPosition(x,y){
var caretPosition=document.caretPositionFromPoint(x,y);
var str=caretPosition.offsetNode.data;
var len=caretPosition.offsetNode.length;
var pos=caretPosition.offset;
var结果={
函数:“getWordAtPosition(“+x+”、“+y+”)”,
x:x,
y:y,
数据:str,
startAt:pos,
endAt:pos,
curChar:str[pos],
};
if(!result.curChar)返回结果;
if(result.curChar==“”)返回结果;
而(pos>=0&&str[pos]!==''pos--;
result.startAt=pos+1;
var endAt=str.indexOf(“”,result.startAt);
endAt=endAt===1 | | endAt==result.startAt?len-1:endAt-1;
result.endAt=endAt;
result.word=str.substring(result.startAt,result.endAt+1);
$lj(结果,);
}
document.onclick=函数(evt){
getWordAtPosition(evt.clientX,evt.clientY);
};
单击此文档中的任意位置。
在这里测试我的代码


您可以使用.offSet()函数@Anonymous0day,elementFromPoint()只提供整个元素,而不是特定的单词。如果你是对的@迪努米特,你能再解释一下吗?如何使用offset()获取所选单词?谢谢我再试一次:你必须使用感谢匿名0天。感谢您的回答,但是caretPositionFromPoint(或elementFromPoint())必须绑定到事件吗?不一定!看我的例子,我只是从事件中获取指针坐标,然后将它们传递给函数!您可以在没有事件的情况下使用该函数,在输出中,我添加了应使用坐标调用的函数,如果您在调试器中尝试该函数,您将在没有事件的情况下获得相同的结果如果您使用我的测试用例,您可以使用
getWordAtPosition(98,15)调用该函数以获取单词“anywhere”无任何事件