我正在使用就地HTML编辑器,现在只专注于Firefox。我有一个元素插入光标所在的位置,并且左右箭头也有效,但我似乎无法找到找到的方法:
我看到document.elementFromPoint,但这不会让我得到一个Range对象。在使用像素位置时,Range对象本身似乎毫无用处。
答案 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元素的单个元素的集合。它没有告诉你它包含的文字行。
我见过的大多数就地编辑都是通过点击一个元素来编辑它。然后,该元素将替换为文本框/区域和相关的保存/取消按钮。