0

我开发了 chrome 扩展,当鼠标悬停在这个词上时,我需要获取任何网页的词。我不想将所有单词都放到特定的容器中,然后通过 id 获取。例如,如果我<p>The weather is very good today</p>想将鼠标悬停在单词“very”上并将其放入我的 js 中(例如,alert('very'))。

4

1 回答 1

3

我想向您展示此功能的概念证明。它非常幼稚和弱,但表明使用适当的正则表达式是可能的。基本上,将鼠标悬停在绿色边框的 div 上即可查看结果。

使用这种方法,每个段落都使用正则表达式分割成多个块。当然,正则表达式越强大,结果就越好。然后,onmousemove正在冒泡,被跨度触发。读取 span 的内容是小菜一碟。

这种方法非常具有侵入性,通过修改您可能不想接触的 DOM 结构。它虽然在普通的 JS 中工作。更高级(仍然很简单)的方法如下:

  1. 不要碰任何段落。
  2. 观察onmousemove鼠标下的段落。
  3. 保存clientXclientY
  4. 复制段落,使其透明和position: absolute.
  5. 在副本上做这spanify()件事。
  6. 使用document.elementFromPoint查找悬停的跨度。使用已保存 (3.)clientXclientY移动副本的位置(左,上)。
  7. 你有跨度。你已经得到了它的内容。
  8. 从 DOM 中删除段落副本。

这个 hack 仍然适用于普通的 JS。快乐编码!;)

于 2012-12-04T23:15:06.217 回答