contenteditable divs在Opera的焦点上有一种奇怪的行为

时间:2013-04-26 20:53:19

标签: javascript html contenteditable

我决定使用div而不是输入。这是一个代码,很简单<div contenteditable="true"></div>所以,看看jsfiddle:http://jsfiddle.net/QkfKk/

对于jsfiddle我标记了第一行的区域。在Opera中,我必须直接点击标记区域来聚焦div。此外,我可以通过双击在那里的任何空间聚焦。但是,点击不应该是双倍。我希望我解释得对。在Chrome和任何其他浏览器中,我只需点击一下即可在div中的任何位置进行关注。在标记区域或非标记区域,无论如何。我相信这是正确的行为。

1 个答案:

答案 0 :(得分:1)

我已经解决了。该解决方案存在一些缺陷,但这对我来说已经足够了。当我点击非标记区域焦点事件触发器时。所以,我决定只将光标位置设置为触发焦点事件的最后一个可能位置。这是代码:

var range = document.createRange();
var selection = getSelection();
var children = this.childNodes;
var last = children[children.length-1];
if (last.textContent.length) {
    range.setStart(last,last.textContent.length);
} else {
    range.setStart(this,0);
}
range.collapse(true);
selection.removeAllRanges();
selection.addRange(range);

这与focus有关,这就是全部。解决方案确实很容易,但效果很好。

小提琴:http://jsfiddle.net/QkfKk/7/