Javascript Don';在选择文本时,是否不触发对焦?

Javascript Don';在选择文本时,是否不触发对焦?,javascript,Javascript,我正在编写一个JavaScript聊天应用程序,但遇到了一个小问题 以下是HTML结构: <div id="chat"> <div id="messages"></div> <textarea></textarea> </div> 这是可行的,但问题是在Firefox中,这使得无法在消息div中选择文本,因为当您尝试单击它时,焦点会转移到textarea。我怎样才能避免这个问题 (半相关问题:在Chrome

我正在编写一个JavaScript聊天应用程序,但遇到了一个小问题

以下是HTML结构:

<div id="chat">
    <div id="messages"></div>
    <textarea></textarea>
</div>
这是可行的,但问题是在Firefox中,这使得无法在消息
div
中选择文本,因为当您尝试单击它时,焦点会转移到
textarea
。我怎样才能避免这个问题


(半相关问题:在Chrome中,
textarea.focus()
似乎不会将键盘焦点转移到
textarea
;它只突出显示框。IE8在单击时似乎根本不会响应
onfocus
,即使设置了
tabindex
。知道为什么吗?)

您可能希望尝试设置超时以聚焦文本区域,如下所示:

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

事件焦点仅存在于表单元素:标签、输入、选择、文本区域和按钮。将onclick事件用于聊天室。

如果改为使用鼠标启动事件会怎么样。然后检查用户是否选择了任何内容,如果没有选择,则给予textarea焦点。这有意义吗


关于跨浏览器问题,您可以查看jQuery或其他javascript库。如果你不打算使用它,你不需要整个东西,但你可以抓住部分使焦点在所有浏览器中都能工作。

我找到了一个解决方案,在点击聊天时自动选择一个文本区域,同时仍然能够选择文本:只需将
div
更改为
标签即可

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

不幸的是,Firefox有一个错误,它会过度更正并强制
标签
内联,但这可以通过使用JavaScript动态创建来修复

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