1

我正在使用可竞争的 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"; 插入符号显示。

任何想法为什么?谢谢!

4

2 回答 2

3

将内部容器的样式设置为display:inlinedisplay:inline-block使用 SPAN 而不是 DIV。DIV 元素默认显示为“块”,Chrome 不会在没有文本内容的内容可编辑块元素中显示插入符号。

于 2013-03-04T21:03:25.737 回答
0

我有一个插入符号没有出现在 Chrome 中的空行中的问题,contenteditable我想出一个不太性感的修复方法是在 div 中放置一个 div 并在该contenteditablediv 中进行所有编辑。出于某种原因,插入符号确实出现了。但是,当然,该 div 可能会被用户“意外”删除。

Chrome 似乎有很多这样的错误。

于 2017-03-14T02:54:56.700 回答