2

我有一个contentEditablediv。

假设用户单击将 HTML 插入可编辑区域的按钮。

因此,他们单击一个按钮,然后将以下内容添加到innerHTMLdiv 中contentEditable

<div id="outside"><div id="inside"></div></div>

如何自动将光标(即插入符号)放在“内部”div 中?更差。这如何在 IE 和 FF 中工作?

4

3 回答 3

7

对于 IE:

var range= document.body.createTextRange();
range.moveToElementText(document.getElementById('inside'));

range.select();

对于 Mozilla:

var range= document.createRange();
range.selectNodeContents(document.getElementById('inside'));

var selection= window.getSelection();
selection.removeAllRanges();
selection.addRange(range);

理论上,Mozilla 版本也应该在 Webkit 和 Opera 中工作。实际上,Webkit 什么都不选择,而 Opera 选择整个页面。叹。这仍然不是得到很好支持的领域。

于 2009-12-12T12:02:40.830 回答
1

据我从你的问题中了解到:

如果它是 contentEditable 可编辑/可输入的,你可以试试这个:

  // you insert content with your code and after that
  document.getElementById('contentEditable_id_here').focus();
于 2009-12-12T09:35:06.100 回答
0

仅供参考,focus() 不适用于在 Google Chrome 中启用 contentEditable 的非表单元素(我只是在<li>可编辑的列表中尝试了它,但在 Win XP Pro SP3 上的 Chrome 10.0.648.82 beta 中没有发生任何事情)。

于 2011-02-23T05:24:09.677 回答