conteneditable divコントロールを使用していますが、ユーザーがこのコントロール内を最初にクリックしたときに、すべてのテキストを削除して、最初にキャレットを配置します。これまでのところ、私のコードはIE、Opera、Firefoxで動作していますが、Chromeでは、設定しようとしている場所にカレットが表示されないようです。私のコードは次のとおりです。
<div id="mydiv" runat="server" contenteditable="true">
<div id="innerDiv" runat="server">
<span onclick="javascript:DisableClick();">text I want to delete on first click</span>
</div>
</div>
function DisableClick()
{
document.getElementById("<%=innerDiv.ClientID %>").innerHTML = "";
if(document.createRange)
{
var range = document.createRange();
range.selectNodeContents(document.getElementById("<%=innerDiv.ClientID %>"));
range.collapse(false);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
}
テキストを削除すると、Chromeでカレットが完全に消えます。ただし、奇妙なことに、divのinnerHTMLを空の文字列に設定する代わりに、document.getElementById( "<%= innerDiv.ClientID%>")。innerHTML ="a";のようなテキストを指定します。カレットが表示されます。
なぜ何かアイデアはありますか?ありがとう!