Javascript 可以在元素';HTML中的声明是否有害?
我想制作一个表单,在这个表单中,我想自动将焦点放在一个字段上。在过去的日子里,我学会了一直等到window.onload启动后再进行DOM操作,因为DOM可能还没有准备好。自从JQuery以来,DOMContentReady事件变得非常有名,它(在兼容浏览器中)比window.onload稍早触发 这仍然会在显示字段和获得焦点之间产生延迟(通过在window.onload中使用document.getElementById(“inputfield”).focus()或在触发DOMContentReady之后)。为了尽量减少延迟,有些人建议在页面中的元素之后直接使用focus(),如:Javascript 可以在元素';HTML中的声明是否有害?,javascript,focus,Javascript,Focus,我想制作一个表单,在这个表单中,我想自动将焦点放在一个字段上。在过去的日子里,我学会了一直等到window.onload启动后再进行DOM操作,因为DOM可能还没有准备好。自从JQuery以来,DOMContentReady事件变得非常有名,它(在兼容浏览器中)比window.onload稍早触发 这仍然会在显示字段和获得焦点之间产生延迟(通过在window.onload中使用document.getElementById(“inputfield”).focus()或在触发DOMContentR
<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>
if(!(.createElement(“输入”)中的“自动聚焦”){
document.getElementById(“q”).focus();
}
(示例来自)
此外,谷歌关闭团队建议这种做法:“像州一样
我不想争论这是否是一种不好的做法(一般来说,我同意内容和行为应该分开的观点,最好是在单独的文件中)。我的问题是:这会有害吗?例如,在某些浏览器中会导致错误消息,因为该字段可能尚未正确呈现(并且不要忘记移动浏览器)。任何建议都将受到欢迎。不,这是无害的,也是(主观的)最好的方法 这是最好的理由:
- 代码尽可能快地执行(不是等待整个DOM,而是等待它到达某个元素)
- 不依赖DOM事件(尚待标准化)
- 缺乏行为分离
- 很难维护,因为代码会分散在各个地方
- 由于存在多个
标记,页面总大小增加
然而,关于它有害的问题,我认为如果浏览器已经处理了脚本节点以运行javascript,那么它也将处理输入节点,因此代码应该可以使用它。因此,我不希望出现错误。我同意你的看法,但我注意到,在缓慢/脆弱的连接中,即使是很短的一页也会带来麻烦。例如,在我的图书馆,当我连接到Gmail时,页面呈现非常慢,我不知道为什么。这会导致查看输入字段和自动对焦之间出现延迟。