2008-10-18 69 views
3

我在Firefox 3.03的DIV元素上使用contentEditable属性。如果将其设置为true,则可以按预期编辑DIV的文本内容。Firefox 3.03和contentEditable

然后,当我将contentEditable设置为“false”时,div也不再可编辑,也如预期的那样。

但是即使文本不再可编辑,闪烁的插入符号(文本输入光标)仍然可见。当我单击同一页面中的大多数其他文本时,即使在普通文本段落中,插入符号现在也可见。

有没有人见过这个?有什么方法可以强制插入符号隐藏吗?

(当我要么调整浏览器或其他应用程序中单击,然后回来,插入符奇迹般地消失。)

回答

6

我已经经历了这一点,我的解决方法是清除选择当我停用CONTENTEDITABLE:

if ($.browser.mozilla) { // replace with browser detection of your choice 
    window.getSelection().removeAllRanges(); 
} 

我其实去除 “CONTENTEDITABLE” 属性比IE等浏览器,而不是将其设置为false:

if ($.browser.msie) { 
    element.contentEditable = false; 
} 
else { 
    $(element).removeAttr('contenteditable'); 
} 

浏览器不一致地管理contentEditable属性,我的测试显示这在整体上运行得更好。我不记得这是否有助于修复脱字号问题,但为了以防万一,我将它扔到了这里。

+0

感谢您的提示。 removeAllRanges()至少似乎隐藏插入符号设置可编辑为false后,好一点。然而,如果我点击文本的其他地方,它会再次回来。删除属性本身似乎没有任何影响。 可能是Mozilla可以在新版本中修复的问题。 – Ash 2008-10-19 23:28:32

0

可以在Firefox中使用样式属性-moz-user-input以获得功能contenteditable=false的工作。
分配的值定义用户输入是否被接受。可能的值是

none  : The element does not respond to user input. 
enabled : The element can accepts user input. This is default. 
disabled : The element does not accept user input. 

例如为:

// to disallow users to enter input 
<asp:TextBox ID="uxFromDate" runat="server" style="-moz-user-input: disabled;"></asp:TextBox> 

// to allow users to enter input 
<asp:TextBox ID="uxFromDate" runat="server" style="-moz-user-input: enabled ;"></asp:TextBox> 

参见https://developer.mozilla.org/en/CSS/-moz-user-input供进一步参考。

0

这解决了ploblem,看起来像Firefox仅是检查是用自己的方式让事情:P

getDoc().designMode = "off";