次の例では、アラートボックスが1つだけ表示されます。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);
ただし、イベントリスナーを追加するだけの場合と比べると見苦しいです。
編集:
オートフォーカス属性に対するブラウザのサポートがないことを心配する必要はありません。以下のリンクをいじるのと同じように、簡単に解決できました。私が見ることができるように、問題に対する最良の解決策もあります。私の質問は、リスナーを手動で呼び出すよりも醜いものでそれを行うことができるかどうかです。
http://jsfiddle.net/tellnes/7TMBJ/3/
Firefoxはオートフォーカスをサポートしていないため、Firefox3.6では正常に動作します。しかし、オートフォーカスをサポートするSafariでは、呼び出されるイベントではありません。