我已经看到了两种方式,两种方式的实现工作只是结构有点不同。根据您的经验,哪种工作更好,为什么?
答案 0 :(得分:94)
我会用多个选项回答这个问题,其中一些选项实际上会在正文中呈现。
<input onclick="myfunction()"/>
- 最好将其放在脚本体中的事件处理程序中。脚注:“当你需要它而不是之前”适用于页面阻塞时的最后一项(感知加载速度) - 用户感知是他们的现实,如果它被加载更快,它确实加载更快(即使可能仍会在代码中出现这些东西。
编辑:参考:
旁注:如果你将脚本块放在标记中,它可能会占用空间(即7和Opera 9.2已知有这个问题)在某些浏览器中实现布局,所以将它们放在一个隐藏的div中(使用类似css的类) :div上的.hide { display: none; visibility: hidden; }
标准:请注意,如果存在问题,标准允许将脚本块放置在几乎任何位置:http://www.w3.org/TR/1999/REC-html401-19991224/sgml/dtd.html和http://www.w3.org/TR/xhtml11/xhtml11_dtd.html
EDIT2:请注意,只要有可能(总是?),您应该将实际的Javascript放在外部文件中并引用它们 - 这不会改变相关的序列有效性。
答案 1 :(得分:38)
在页面顶部编写脚本的问题是阻塞。浏览器必须停止处理页面,直到下载,解析和执行脚本。原因很明显,这些脚本可能会在页面中插入更多内容来更改渲染结果,它们也可能会删除不需要渲染的内容等。
一些更现代的浏览器违反了这条规则,因为没有阻止下载脚本(ie8是第一个),但整体而言下载并不是阻塞所花费的大部分时间。
查看Even Faster Websites,我刚刚读完它,它完成了将脚本放到页面上的所有快速方法,包括将脚本放在页面底部以允许渲染完成(更好的用户体验)
答案 2 :(得分:15)
W3Schools有nice article on this subject。
<head>
脚本要执行的时候 调用,或触发事件时, 被放置在函数中。
将您的功能放在首位 这一方面,他们都在一个 地方,他们不干涉 页面内容。
<body>
如果你不想要你的脚本 放在一个功能内,或者如果你的 脚本应该写页面内容,它 应该放在身体部分。
答案 3 :(得分:4)
头部,或在身体标签关闭之前。 当DOM加载JS然后执行时,这正是jQuery document.ready所做的。
答案 4 :(得分:1)
我总是把我的脚本放在标题中。我的理由: