在以下示例中,我只收到一个警告框。我读到重点放在 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);
但与仅添加事件侦听器相比,它看起来很难看。
编辑:
不用担心浏览器不支持 autofocus 属性。它很容易解决,就像我在下面的链接中所做的那样。如我所见,还有解决问题的最佳方法。我的问题是,我是否可以比手动调用监听器更丑。
http://jsfiddle.net/tellnes/7TMBJ/3/
它在 Firefox 3.6 中运行良好,因为 Firefox 不支持自动对焦。但在支持自动对焦的 Safari 中,并没有调用该事件。