我开发了 chrome 扩展,当鼠标悬停在任何网页上的单词上时,我需要获取该单词。
我不想将所有单词放入特定容器,然后通过 id 获取它。
例如,如果我有 <p>The weather is very good today</p>
我想将鼠标悬停在“very”一词上并将其放入我的 js 中(例如 alert('very')
)。
最佳答案
我想向您展示一个 proof of concept 此功能。这是非常幼稚和薄弱的,但表明使用适当的正则表达式是可能的。基本上,将鼠标悬停在绿色边框的 div 上即可查看结果。
通过这种方法,每个段落都通过正则表达式分割成跨区 block 。当然,正则表达式越强大,结果就越好。然后,onmousemove
冒泡,由跨度触发。读取跨度的内容是小菜一碟。
这种方法是非常侵入性的,它会修改 DOM 结构,你可能不想碰它。不过它可以在纯 JS 中运行。更高级(仍然简单)的方法如下:
- 请勿触摸任何段落。
- 观察
onmousemove
找到鼠标下的段落。 - 保存
clientX
和clientY
。 - 复制该段落,使其透明并
position:absolute
。 - 在副本上执行
spanify()
操作。 - 使用document.elementFromPoint查找正在悬停的跨度。使用保存的 (3.)
clientX
和clientY
移动副本的位置(左、上)。 - 你有这个跨度。您已获得其内容。
- 从 DOM 中删除段落副本。
这个 hack 在纯 JS 中仍然有效。快乐编码! ;)
关于javascript - 当鼠标悬停在单词上时获取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13712885/