我想製作一個表格,我想自動將焦點放在字段上。在過去,我學會了一直等待DOM操作,直到window.onload被觸發,因爲DOM可能沒有準備好。由於JQuery的DOMContentReady事件已經成名,在firefox(在兼容的瀏覽器中)比window.onload早一些。可以在HTML中的元素聲明之後使用element.focus()有害嗎?
從字段顯示到獲取焦點的時刻(通過在window.onload中或在DOMContentReady被觸發後使用document.getElementById(「inputfield」)。focus()),仍然存在延遲。爲了最大限度地減少延遲,有些人建議使用焦點()在你的頁面中的元素之後直接,如:
<form name="f">
<input id="q" autofocus>
<script>
if (!("autofocus" in document.createElement("input"))) {
document.getElementById("q").focus();
}
</script>
<input type="submit" value="Go">
</form>
(從Dive Into HTML5例)
此外,谷歌關閉小組建議這種做法:「the preferred way is to use inline scripts as soon as possible 「,如another answer on SO的狀態。
我不想辯論這是否是不好的做法(一般來說,我同意內容和行爲應該分開,最好在不同的文件中)。我的問題是:這可能有害嗎?例如,在某些瀏覽器中導致錯誤消息,因爲該字段可能仍未正確呈現(並且不要忘記移動瀏覽器)。任何建議表示讚賞。
我同意你的看法,但我注意到緩慢/片狀的連接,即使是短小的頁面也會給你帶來麻煩。例如。在我的圖書館,當我連接到Gmail時,頁面呈現得非常緩慢,我不知道爲什麼。這會在查看輸入字段和自動對焦之間造成延遲。 – 2010-02-13 15:59:55