Chromeを使用してこのページを開くと( ライブデモ を参照):
<span id="myspan" contenteditable=true></span>
CSS:
#myspan { border: 0; outline: 0;}
JS:
$(myspan).focus();
contenteditable
span
にはフォーカスがあります(書き始めることができ、すでにフォーカスされていることがわかります)が、「I
」編集カーソルは表示されません。 。
このカーソルを表示させる方法は?(備考:outline:0
が必要です。また、空白がなくてもスパンが空であるという事実が必要です。
注:Firefoxではカーソルが表示されます。
解決策は、<span>
を<div>
に変更することです(これにより、他の質問の多くのcontenteditable
問題が解決されることがわかりました)+ min-width
を追加します。
実際、次のコードを使用すると、<div>
のサイズは0px x 18px
になります。キャレット(カーソルの編集)が非表示になる理由を説明します!
HTML
<div id="blah" contenteditable=true></div>
CSS
#blah {
outline: 0;
position: absolute;
top:10px;
left:10px;
}
JS
$("#blah").focus();
次に、追加
min-width: 2px;
cSSでははChromeを使用してもキャレットを表示できるようにします: http://jsfiddle.net/38e9mkf4/ 2 /
問題は、span
sがインライン要素であることです。 CSSに_display:block;
_を追加するだけで問題が解決します。
$(myspan).focus();
_#myspan {
border: 0;
outline: 0;
display: block;
}
_
_<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<span id="myspan" contenteditable=true></span>
_
左側にパディングを追加すると、カーソルが表示されます。
#myspan
{
border: 0;
outline: 0;
min-width: 100px;
height: 30px;
padding-left: 1px;
}
.cont_edit {
outline: 1px solid transparent;
}
これは、空のContentEditable
領域がレンダリングされる方法に関係しています。フォーカスの問題ではないことを証明するには、編集可能なdivにテキストを追加してから削除します。最後の文字がなくなると、カーソルが消えます
質問から キャレット位置をcontentEditable要素内の空のノードに設定
選択/範囲モデルは、要素の境界を無視して、テキストコンテンツへのインデックスに基づいています。テキストのないインライン要素内に入力フォーカスを設定することは不可能かもしれないと思います。確かにあなたの例では、クリックや矢印キーで最後の要素内にフォーカスを設定することはできません。
各スパンを_
display: block
_に設定すると、ほぼ機能しますが、親の空白の存在に応じて、非常に奇妙な動作がまだいくつかあります。表示をハックして、フロート、インラインブロック、絶対位置などのトリックでインラインに見えるようにするIE各要素を個別の編集ボックスとして扱います。相対位置のブロック要素を隣に配置すると機能しますが、それはおそらく非現実的です。
_​
_のようなゼロ幅文字を追加することもできます
document.getElementById('myspan').focus();
_#myspan {
border: 0;
outline: 0;
}
_
_<span id="myspan" contenteditable="true">​</span>
_
私にとっては、contenteditable divのコンテンツを<br>
に設定すると機能します。 nbsp;
に設定してみましたが、編集を開始する前にdivに余分な文字スペースが作成されます。だから、私はこれを選びます:
<div id="blah" contenteditable=true><br></div>
以上:
<div id="blah" contenteditable=true>nbsp;</div>
お役に立てれば。
CSSスタイルを追加
min-height: 15px;
あなたも必要かもしれません
display: block;
あなたのcontenteditable="true"
鬼ごっこ