JavaScript是否必须在头标签?
我相信JavaScript可以在任何地方(几乎),但我几乎总是看到它之间<head></head>
。 我正在使用jquery,并想知道是否必须在头标签出于某种原因,或者如果我将它打破了东西。 谢谢。
编辑:为什么它几乎总是在头标签?
JavaScript在文档中find的地方执行。 如果您将内嵌JavaScript放在主体中,那么当浏览器到达时就会执行它。 如果你使用$(document).ready(...)
来执行,那么定位就不重要了。 否则,你可能会发现重要的情况。 一般来说,这并不重要。 脚本最终在head
标签大多出于传统。
不,它可以在任何地方。 事实上,把它放在文档的底部是个好主意。 有关解释原因,请参阅http://developer.yahoo.com/performance/rules.html#js_bottom 。
基本上,浏览器停止呈现页面,直到.js
文件被完全下载和处理。 由于它们在HTML到达时逐渐呈现页面,因此后面的.js
文件被引用,用户体验就会更好。
所以诀窍是只包含绝对关键的脚本,并在页面尾部加载剩余的脚本。
浏览器读取脚本标记之前,所有事情都会停止,直到处理完为止。 因此,如果您尽可能将脚本标记向下移动,则页面的渲染速度会更快 – 理想情况下,您只需在结束标记之前。 总的加载时间显然是一样的。
你将不得不确保你实际上没有调用任何jQuery函数,直到包含jQuery。
这就是为什么JavaScript是如此混乱,为什么旧的StackOverflowpost是开发者最糟糕的噩梦。 现在JS变化如此之快,每个星期都有一个新的框架出现,每个人都被这个倡导者称为蜜蜂。
Gumbo说得对,脚本标记可以在内联元素的任何位置被引用,但是加载外部JS文件或在标记内包含JS代码的select是对每个事例分别作出的决定。 是的,浏览器将停止加载JSparsing,因此你需要考虑这将影响页面加载速度和function。 目前还是在一年前,2015年年中(记住popualar的答案是在2009年7月,大多数开发者将永远不会读这个,因为他们看到答案1并继续!!!)是给定移动页面加载速度的优先级要求对移动/手机蜂窝的两个请求的限制,在3G下给你一个28K(2×14kb(是))有效载荷,你需要考虑(像谷歌的名字)“画画”28k和这应该为用户提供足够的页面内容/交互性,以确保他们在正确的页面或正确的轨道上,在这28K。 所以一个jquery缩小了目前87.6lkb,就是不会砍芥子!
这就是为什么大多数移动页面加载目前坐在几秒钟之前加载任何东西,这是4G! 不要这样做。 在您的JQuery文件加载之前,页面速度为王,用户点击后退button。 在3G +下,一个28k的有效载荷将会在<1秒的时间内加载,所以没有任何理由说明你的网页在那个时候不会开始加载。 当你下次打你的手机上的一个链接,看着小酒吧坐下来,等待它通过下一页的所有标签!
所以,不要把你的页面放在SO上7年前发布的post的位置(这不是错误只是过时),而是需要每一段代码,并确保用户在尝试之前可以使用他最重要的页面方面加载6 JS框架来实现聪明的平行卷轴和广泛的数据绑定为您的联系页面。
顺便说一句,谷歌要求你把JS推到底,因为他们提供谷歌分析代码,这需要加载的最后一件事。
在代码之前思考!
不是。SCRIPT不仅被归类为head.misc元素,而且被作为特殊元素 ,因此在允许内联元素被允许的地方被允许。 所以你可以把SCRIPT
放在允许内联元素的地方:
<p>foo <script>document.write("bar")</script></p>
实际上, 有些人build议在结束标记之前将SCRIPT
元素放在BODY
的末尾,以便在加载JavaScript之前parsing整个文档。 这是为了防止JavaScript阻止并行下载。
实际上,出于性能原因,您几乎总是希望将脚本标签放在页面底部。 为什么? 你希望你的页面结构和你的CSS首先加载,以便用户立即看到页面。 然后你想要所有的行为驱动代码加载最后。 YSlow是一个很好的Firefox扩展,将显示您的性能等级。 其中的一项评分是你是否在底部而不是顶部的JavaScript。
只要注意你可能会对延迟造成的不良影响,具体取决于用户的浏览器,以及你在哪里将Javascript放在页面中 – 请参阅史蒂夫·苏德斯(Steve Souders)的所有内容,包括斯坦福讲座的video,而他的工作成果就留在了这里 (尽可能在页面底部放置脚本等)。
-
因为您不希望JavaScript与HTML混合 – 具有行为的内容。 最好你想在一个单独的文件。
-
让JS在其他地方有优点和缺点 – 例如它会在不同的时间执行,并且你可以从位于正文中的javascript写入文档。
它可以进入head
或body
标签。 请记住,只要读取完就会执行,不一定在文档加载完成时执行。 看看这里 。
在某些情况下,如果脚本位于错误的位置,脚本可能无法正常工作。 有些JavaScript需要在特定的HTML元素之后执行,其他的则需要准确地将脚本输出显示出来,其他的则应该放在文档头部。 这实际上取决于如何编写代码。 如果你不确定,你应该在window.load或DOMready上执行你的代码: http : //www.javascriptkit.com/dhtmltutors/domready.shtml