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