Javascript 可以在元素';HTML中的声明是否有害?

Javascript 可以在元素';HTML中的声明是否有害?,javascript,focus,Javascript,Focus,我想制作一个表单,在这个表单中,我想自动将焦点放在一个字段上。在过去的日子里,我学会了一直等到window.onload启动后再进行DOM操作,因为DOM可能还没有准备好。自从JQuery以来,DOMContentReady事件变得非常有名,它(在兼容浏览器中)比window.onload稍早触发 这仍然会在显示字段和获得焦点之间产生延迟(通过在window.onload中使用document.getElementById(“inputfield”).focus()或在触发DOMContentR

我想制作一个表单,在这个表单中,我想自动将焦点放在一个字段上。在过去的日子里,我学会了一直等到window.onload启动后再进行DOM操作,因为DOM可能还没有准备好。自从JQuery以来,DOMContentReady事件变得非常有名,它(在兼容浏览器中)比window.onload稍早触发

这仍然会在显示字段和获得焦点之间产生延迟(通过在window.onload中使用document.getElementById(“inputfield”).focus()或在触发DOMContentReady之后)。为了尽量减少延迟,有些人建议在页面中的元素之后直接使用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>

if(!(.createElement(“输入”)中的“自动聚焦”){
document.getElementById(“q”).focus();
}
(示例来自)

此外,谷歌关闭团队建议这种做法:“像州一样


我不想争论这是否是一种不好的做法(一般来说,我同意内容和行为应该分开的观点,最好是在单独的文件中)。我的问题是:这会有害吗?例如,在某些浏览器中会导致错误消息,因为该字段可能尚未正确呈现(并且不要忘记移动浏览器)。任何建议都将受到欢迎。

不,这是无害的,也是(主观的)最好的方法

这是最好的理由:

  • 代码尽可能快地执行(不是等待整个DOM,而是等待它到达某个元素)
  • 不依赖DOM事件(尚待标准化)
它糟糕的原因:

  • 缺乏行为分离
  • 很难维护,因为代码会分散在各个地方
  • 由于存在多个
    标记,页面总大小增加

老实说,我认为如果在页面弹出和元素获得焦点之间出现延迟,那么这确实表明您的页面可能太大了,因此减少该延迟将是您的第一个调用端口。我知道如果我看到这样的内联代码,我会非常不高兴。正如乔希所说,这将是一场噩梦


然而,关于它有害的问题,我认为如果浏览器已经处理了脚本节点以运行javascript,那么它也将处理输入节点,因此代码应该可以使用它。因此,我不希望出现错误。

我同意你的看法,但我注意到,在缓慢/脆弱的连接中,即使是很短的一页也会带来麻烦。例如,在我的图书馆,当我连接到Gmail时,页面呈现非常慢,我不知道为什么。这会导致查看输入字段和自动对焦之间出现延迟。