Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该在html的主体还是主体中编写脚本?_Javascript_Html - Fatal编程技术网

Javascript 我应该在html的主体还是主体中编写脚本?

Javascript 我应该在html的主体还是主体中编写脚本?,javascript,html,Javascript,Html,我已经看到了两种方法,两种实现都是有效的,只是结构有点不同。根据您的经验,哪一种效果更好?为什么?头部,还是在关闭body tag之前。 当DOM加载JS然后执行时,这正是jQuery document.ready所做的。我总是将脚本放在标题中。我的理由: 我喜欢将代码和(静态)文本分开 我通常从外部源加载脚本 同一个脚本在多个页面中使用,因此感觉像是一个包含文件(它也位于页眉中) 许多学校都有自己的学校 执行时要执行的脚本 调用,或在触发事件时, 被放置在函数中 把你的职能放在头上 第二节,

我已经看到了两种方法,两种实现都是有效的,只是结构有点不同。根据您的经验,哪一种效果更好?为什么?

头部,还是在关闭body tag之前。
当DOM加载JS然后执行时,这正是jQuery document.ready所做的。

我总是将脚本放在标题中。我的理由:

  • 我喜欢将代码和(静态)文本分开
  • 我通常从外部源加载脚本
  • 同一个脚本在多个页面中使用,因此感觉像是一个包含文件(它也位于页眉中)
  • 许多学校都有自己的学校

    执行时要执行的脚本 调用,或在触发事件时, 被放置在函数中

    把你的职能放在头上 第二节,这样他们就在一起了 放置,并且它们不会干扰 页面内容

    如果你不想让你的脚本 放置在函数中,或者如果 脚本应该写页面内容,它 应该放在身体部位


    在页面开头编写脚本的问题是阻塞。在下载、解析和执行脚本之前,浏览器必须停止处理页面。原因很清楚,这些脚本可能会在页面中插入更多内容,从而更改呈现结果,也可能会删除不需要呈现的内容,等等

    一些更现代的浏览器违反了这一规则,没有阻止下载脚本(ie8是第一个),但总体而言,下载并不是阻止的大部分时间


    请看,我刚刚读完它,它介绍了将脚本放到页面上的所有快速方法,包括将脚本放在页面底部以完成渲染(更好的用户体验)。

    我会用多个选项来回答这个问题,其中一些选项实际上是在主体中渲染的

    • 将库脚本(如jQuery库)放在head部分
    • 将普通脚本放在头部,除非它成为性能/页面加载问题
    • 将与包含关联的脚本放置在该包含的内部和末尾。一个例子是asp.net页面中的.ascx用户控件-将脚本放在该标记的末尾
    • 将影响页面呈现的脚本放置在正文末尾(正文关闭之前)
    • 不要将脚本放在标记中,例如
      ——最好将其放在脚本正文中的事件处理程序中
    • 如果你不能做出决定,就把它放在头上,直到你有理由不去做,比如页面阻塞问题
    脚注:“当您需要它而不是之前”适用于页面阻塞时的最后一项(感知加载速度)。用户的感知就是他们的现实,如果它被感知到加载速度更快,那么它确实加载速度更快(即使代码中仍可能出现一些东西)

    编辑:参考:

    • asp.net讨论: 在这里:
    • jQuery文档就绪讨论:
    • 关于这个问题的其他答案也提供了有效的信息
    • 使用www.google.com和www.bing.com搜索相关信息(有很多参考资料)
    旁注:如果在标记中放置脚本块,它可能会占用空间,从而影响某些浏览器中的布局(ie7和opera 9.2已知存在此问题),因此请将它们放置在隐藏的div中(使用css类,如:
    .hide{display:none;visibility:hidden;}
    ,位于div上)

    标准:请注意,如果存在问题,标准允许将脚本块几乎放置在任何位置:以及


    EDIT2:请注意,只要有可能(总是?),您应该将实际的Javascript放在外部文件中并引用这些文件-这不会改变相关的序列有效性。

    回答得好,从技术上讲,将脚本放在头中是干净的,但是从最终用户的角度来看,将脚本放在文档的底部作为最后一件事有很多很多好处。在一些页面上,我看到页面的明显响应性通过将脚本移到底部而增加了很多倍。总的来说,它可能不会更快地完全加载,但对最终用户来说,当他们看到内容时,它会感觉更快!这似乎相当正确,我有问题延迟我的脚本执行,直到我的所有资源都已加载。我也看到过在主体中加载脚本的页面,它可以如此有效地加载资源。你能更清楚地解释一下吗?说明书上说要阻止?这是真的吗?我相信他们阻止渲染的原因,而不是因为任何规范说这样做@Rob我记得书中提到过它,让我仔细阅读规范并确保(如果需要,我会进行编辑)。@Rob在html规范中找不到blocking这个词,它确实提到了停止渲染(以及脚本插入html的解释),但没有具体说明blocking,我将进行编辑。您是否有关于此页面阻止问题或浏览器如何下载资源的详细信息的来源?@Khoi-页面呈现阻止是一个常见的文档问题。编辑答案以提供一些其他参考,因为它在某种程度上取决于环境(平台和浏览器/版本)。到目前为止,此主题的最佳答案非常有用+1.关于“不要在标记中放置脚本,例如”,在极少数情况下,您可能不得不这样做。例如在img标签中:onerror@Andrew
    $().on(“error”,function(){})
    是一个示例,或者如果要避免多个错误(在备份映像上),请尝试
    $().one(“error”,function(){})使用
    one
    函数-jQuery-specific,但是如果您想要纯JavaScriptSee,您可以反转源代码查看非常好的解释和建议:真是胡说八道。。。