gpt4 book ai didi

javascript - 在输入标签上使用 autofocus 属性时不会调用 onfocus

转载 作者:太空狗 更新时间:2023-10-29 15:09:28 26 4
gpt4 key购买 nike

在下面的示例中,我只得到一个警告框。我读到焦点放在执行 JavaScript 代码之前。有没有办法让它继续工作?

<input id="i" type="text" autofocus onfocus="alert(1)">

<script type="text/javascript">
document.getElementById('i').addEventListener('focus', function() {
alert(2);
}, false);
</script>

(我只在 Safari 中测试过)

编辑:我显然可以这样做(Prototypejs 选择器):

var autofocusElement = $$('input[autofocus]')[0];
callListener(autofocusElement);

但与只添加一个事件监听器相比,它看起来很难看。

编辑:

不要担心浏览器不支持自动对焦属性。它很容易解决,就像我在下面的 fiddle 链接中所做的那样。正如我所见,还有解决问题的最佳方法。我的问题是我是否可以用比手动调用监听器更简单的方式来完成。

http://jsfiddle.net/tellnes/7TMBJ/3/

它在 Firefox 3.6 中工作正常,因为 Firefox 不支持自动对焦。但在支持自动对焦的 Safari 中,则不会调用该事件。

最佳答案

来自HTML5 working draft :

There must not be more than one element in the document with the autofocus attribute specified.

所以你无论如何都在要求未定义的行为。

只有一个 autofocus 元素,在 Firefox 3.6 下,这两个处理程序都不会在页面加载时被调用。手动将焦点赋予元素调用两个处理程序(然后进入无限循环,因为警告框在关闭时将焦点返回给元素)。

HTML5 草案确实说 autofocus 应该执行 focusing steps在页面加载上,包括引发 focus 事件,但浏览器目前可能没有以完整或一致的方式实现该功能。

您可能希望在页面加载期间显式调用您的 focus 事件处理程序,直到 HTML5 规范完成并且浏览器开始寻求全面支持。

关于javascript - 在输入标签上使用 autofocus 属性时不会调用 onfocus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com