2

私はcontentEditabledivを持っています。

ユーザーが編集可能領域にHTMLを挿入するボタンをクリックしたとします。

したがって、ボタンをクリックするとinnerHTMLcontentEditabledivのに以下が追加されます。

<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

FYI focus() は、Google Chrome で contentEditable が有効になっている非フォーム要素では機能しません (<li>編集可能なリスト内で試してみたところ、Win XP Pro SP3 の Chrome 10.0.648.82 ベータ版では何も起こりませんでした)。

于 2011-02-23T05:24:09.677 に答える