2010-04-25 35 views
2

我正在写一个JavaScript聊天应用程序,但我遇到了一个小问题。选择文字时不要闪光onfocus?

下面是HTML结构:

<div id="chat"> 
    <div id="messages"></div> 
    <textarea></textarea> 
</div> 

当用户点击/集中在聊天框,我想文本框被自动聚焦。我对聊天框此onfocus处理程序:

chat.onfocus = function() { 
    textarea.focus(); 
} 

这工作,但问题是,在Firefox,这使得它无法在消息div选择文本,因为当你尝试点击就可以了,重点转移到textarea。我怎样才能避免这个问题?

(半相关的问题:在Chrome中,textarea.focus()似乎没有键盘焦点转移到textarea;它仅突出了盒子IE8似乎没有点击时向onfocus回应可言,即使它。 ?tabindex设置任何想法,为什么)

回答

0

我发现了一个解决方案,在点击聊天时自动选择文本区域,同时仍然可以选择文本:只需将div更改为label即可。

<label id="chat" style="display: block"> 
    <div id="messages"></div> 
    <textarea></textarea> 
</label> 

不幸的是,Firefox有一个错误,这错误overcorrects和力量label是内联的,但是这可以通过使用JavaScript动态创建它是固定的。

0

你可能想尝试的setTimeout集中文本区域,像这样:

setTimeout(function() { 
    textarea.focus(); 
}, 1000); 
0

事件聚焦状态只存在于表单元素:LABEL,INPUT,SELECT, TEXTAREA和BUTTON。使用chatbox的onclick事件。

1

如果您使用鼠标上移事件,该怎么办?然后检查用户是否有任何选择,如果不给textarea焦点。那有意义吗?

关于跨浏览器问题,你可以看看jQuery或其他JavaScript库。如果你不打算使用它,你不需要整个事情,但你可以抓住部件,使焦点在所有浏览器中工作。