Я использую расширенный элемент управления div, и когда пользователь сначала щелкает внутри этого элемента управления, я хочу удалить весь текст и поместить каретку в начале. Пока мой код работает с IE, Opera и Firefox, но в Chrome кажется, что карет не появляется там, где я пытаюсь его установить. Мой код выглядит следующим образом:Caret внутри contenteditable div на 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. Однако странно, что если вместо того, чтобы устанавливать innerHTML для div в пустую строку, я указываю некоторый текст, например document.getElementById ("<% = внутреннийDiv.ClientID%>"). InnerHTML = "a"; отображается каретка.
Любые идеи, почему? Благодаря!
Скрипка для возиться: http://jsfiddle.net/gsEXa/ – isherwood