在Javascript中查找上方或下方的行

时间:2010-03-15 21:56:00

标签: javascript firefox

我正在使用就地HTML编辑器,现在只专注于Firefox。我有一个元素插入光标所在的位置,并且左右箭头也有效,但我似乎无法找到找到的方法:

  1. 主页和结束键的开头和结尾
  2. 向上/向下箭头的下一行向上或向下。
  3. 我看到document.elementFromPoint,但这不会让我得到一个Range对象。在使用像素位置时,Range对象本身似乎毫无用处。

2 个答案:

答案 0 :(得分:1)

如果您需要在特定像素位置下为元素创建范围,可以将document.elementFromPoint()和document.createRange()以及Range.selectNodeContents()组合在一起;

下面的代码段会突出显示元素的内容(100,200)

var elem = document.elementFromPoint(100,200);
var r = document.createRange();
var s = window.getSelection()
r.selectNodeContents(elem);
s.removeAllRanges();
s.addRange(r);

我希望这能帮助您找到最终的解决方案。

答案 1 :(得分:0)

我不确定你的'开始和结束'是什么意思。您是指页面上的一行文本,无论其包含哪个元素?您能提供指向您的应用或说明性示例页面的链接吗?

IE和Firefox都提供了element.getClientRects()方法。但是,它仅在某些情况下有效,并且从浏览器到浏览器的行为不同。有关quirksmode的信息,请参见details

在许多情况下,此方法可能没有用。如果您有一个包含裸文本的P元素,Firefox将返回一个包含表示P元素的单个元素的集合。它没有告诉你它包含的文字行。

我见过的大多数就地编辑都是通过点击一个元素来编辑它。然后,该元素将替换为文本框/区域和相关的保存/取消按钮。