Chrome浏览器中JavaScript无法触发焦点事件

4
自从升级到最新版的Chrome 34.0.1847.116后,调用时焦点事件似乎没有触发。
myinput.focus()

在JavaScript中。

在Chrome 33.0.1750.154中运行正常。

test.html

<html>
<head><title>Test</title></head>
<body>
<input id="test_box" onfocus="alert('focused');" />
</body>
</html>

从控制台:

document.getElementById('test_box').focus();

Chrome 34没有弹出警告。

有什么想法?这是个bug吗?有没有方法来触发事件?


对我来说可以工作。我避免在我的测试用例源代码)中使用alert,因为alert会影响焦点。在Windows上使用Chrome 34.0.1847.116进行测试,我看到了即将聚焦的消息和onfocus属性的消息。 - T.J. Crowder
1
我可能有相关的问题,降级到 Chrome 33,问题就消失了。请参见 https://dev59.com/C37aa4cB1Zd3GeqPucSr。 - giosakti
3个回答

11

当您取消对 Chrome Dev 工具的关注时,焦点事件将触发。


这种行为有改变吗?在Chrome v33中,当事件被触发并显示警报时,它会将焦点从控制台转移到浏览器窗口。 - Adam
我认为是这样的,而且在Chrome Canary中表现相同,所以我猜测这可能是一个尚未报告的错误或者是故意的行为。 - user3071008
它是否真的比“取消焦点”控制台更多?例如,如果您切换到元素选项卡并单击元素,从而取消了控制台的焦点,它仍不会触发。 - nonopolarity
@動靜能量 您是正确的;开发工具必须失去焦点,我已经编辑了我的答案。 - user3071008

2

我不确定这是否是Chrome v34的一个错误或错误修复,如果v33没有显示相同的行为。(这是由于在控制台中输入语句造成的)。

如果您尝试http://fiddle.jshell.net/aQ5n6/7/show/

并进入控制台,输入以下内容:

document.getElementById('test_box').focus();

因为焦点仍然在控制台上,所以不会触发警报...但是一旦单击HTML文档的内容(例如任何空白处),它就会触发警报。当焦点实际上不在输入元素上时(当焦点仍然在控制台上时),事件似乎没有被触发。


1

我的版本是34.0.1847.116Google Chrome

在这里工作 Fiddle

<input id="test_box" onfocus="alert('focused');" />

建议:检查您的控制台是否有错误或警告。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接