我正在使用可竞争的 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"; 插入符号显示。
任何想法为什么?谢谢!