javascript必须在head标签中吗?

joh*_*nny 64 javascript

我相信javascript可以在任何地方(几乎),但我几乎总是在它之间看到它<head></head>.我正在使用jquery,并想知道它是否由于某种原因必须在head标签中,或者如果我移动它会破坏某些东西.谢谢.

编辑:为什么它几乎总是在头标签?

Nat*_*ate 45

不,它可以在任何地方.实际上,将它放在文档的底部有时是个好主意.有关原因的解释,请参阅http://developer.yahoo.com/performance/rules.html#js_bottom.


Joh*_*eek 38

JavaScript在文档中的任何位置执行.如果您将内联JavaScript放在正文中,它将在浏览器到达时执行.如果你$(document).ready(...)用来执行事情,那么定位应该无关紧要.否则,您可能会发现重要的情况.一般来说,没关系.脚本最终出现在head传统标签中.

  • 我会争辩说_does_不管你把脚本标签放在哪里.请参阅Nate的帖子(http://stackoverflow.com/questions/1213281/does-javascript-have-to-be-in-the-head-tags/1213310#1213310),了解为什么最好在页面中放置较低的脚本. (5认同)
  • 但是为了调用$(document).ready(...),必须首先加载jquery.因此,即使自定义函数本身不需要,也需要加载和编译. (3认同)

Ant*_*lev 16

基本上,浏览器会停止呈现页面,直到.js文件被完全下载和处理.由于它们在HTML到达时逐步呈现页面,因此.js引用后面的文件,将获得更好的用户体验.

因此,诀窍是只包含绝对重要的脚本head,并在页面末尾加载剩余的脚本.


Dra*_*mon 9

当浏览器读取脚本标记直到它处理完毕后,一切都会停止.因此,如果您尽可能地向下移动脚本标记,您的页面将更快地呈现 - 理想情况是在结束正文标记之前.显然总的加载时间是相同的.

在使用jQuery之前,您必须确保实际上不调用任何jQuery函数.


Joo*_*ols 9

这就是为什么JavaScript陷入如此混乱以及为什么旧的StackOverflow帖子是开发者最糟糕的噩梦.JS现在变化如此之快,每周都有一个新的框架出现,并且每个框架都被它的倡导者声称为蜜蜂.

Gumbo是正确的,可以在内联元素的任何地方引用脚本标记,但是加载外部JS文件或在标记中包含JS代码的选择是在每种情况下单独做出的决定.是的,浏览器在解析时将停止加载JS,因此您需要考虑这将如何影响页面加载速度和功能.当前或截至一年前,即2015年中期(请记住,人们的回答是在2009年7月,大多数开发人员都不会读到这个,因为他们看到的是答案1并继续前进!!!)是给定的移动设备页面加载速度的优先级需要对移动/单元桅杆的两个请求限制,在3G下为您提供28k(2x 14kb(是))有效负载,您需要考虑(如Google命名)'绘制到屏幕'28k和这应该为用户提供足够的页面内容/交互性,以确保他们在28k的正确页面或正确的轨道上.所以一个Jquery缩小目前是87.6lkb,只是不会削减芥末!

这就是为什么大多数移动页面加载目前在加载任何东西之前都会停留几秒钟,那就是4G!不要这样做.在加载JQuery文件之前,页面速度为王,用户点击后退按钮.在3G +下,28k的有效载荷将在<1秒内加载,因此没有理由说您的页面在那段时间内没有开始加载.下次您点击手机上的链接时,请观看小酒吧,等待下一页上的所有标签!

因此,不要将你的页面结构放在SO上7年前发布的帖子所说的内容上(这不是过时的错误),而是需要每一段代码并确保用户在尝试之前可以使用页面的最重要方面加载6个JS框架,为您的联系页面实现巧妙的并行滚动和广泛的数据绑定.

BTW谷歌要求你把JS推到谷底,因为他们提供谷歌分析代码,这需要是最后加载的东西.

在编码之前先想想!


Gum*_*mbo 5

No. SCRIPT不仅被归类为head.misc元素,而且还被分类为特殊元素,因此在允许内联元素的地方允许使用.所以你可以在SCRIPT任何地方放置内联元素:

<p>foo <script>document.write("bar")</script></p>
Run Code Online (Sandbox Code Playgroud)

实际上,有些人建议将SCRIPT元素放在结束BODY标记之前的末尾,以便在加载JavaScript之前解析整个文档.这是为了防止JavaScript阻止并行下载.