我读了你应该在定义JavaScript函数<head>
的标签,但如何做的位置<script>
(是否在<head>
,<body>
或任何其他标记)影响的JavaScript函数。
具体来说,它如何影响函数的范围以及您可以从哪里调用它?
我读了你应该在定义JavaScript函数<head>
的标签,但如何做的位置<script>
(是否在<head>
,<body>
或任何其他标记)影响的JavaScript函数。
具体来说,它如何影响函数的范围以及您可以从哪里调用它?
告诉人们<SCRIPT>
只在头部添加听起来是一件合理的事情,但正如其他人所说,不推荐甚至不实用的原因有很多 - 主要是速度和动态生成 HTML 页面的方式。
这是HTML 4 规范所说的:
SCRIPT 元素将脚本放置在文档中。该元素可以在 HTML 文档的 HEAD 或 BODY 中出现任意次数。
和一些示例 HTML。看起来不是都格式化在这里吗:)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>A document with SCRIPT</TITLE>
<META http-equiv="Content-Script-Type" content="text/tcl">
<SCRIPT type="text/vbscript" src="http://someplace.com/progs/vbcalc">
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
...some JavaScript...
</SCRIPT>
</BODY>
</HTML>
HTML 5 中值得期待的东西:
中的新异步属性<SCRIPT>
:
注意:有多种方法可以执行脚本:
async 属性为“true”:脚本将与页面的其余部分异步执行,因此脚本将在页面继续解析的同时执行。
async 属性为“false”,但 defer 属性为“true”:当页面解析完成时,脚本将被执行。
正常的比赛规则仍然有效;在定义之前不要使用东西。:)
另外,请注意“将所有内容放在底部”的建议并不是书中的唯一规则——在某些情况下它可能不可行,而在其他情况下将脚本放在其他地方可能更有意义。
将脚本放在文档底部的主要原因是为了提高性能,与其他 HTTP 请求不同,脚本不会并行加载,这意味着它们会减慢页面其余部分的加载速度。将脚本放在底部的另一个原因是您不必使用任何“DOM 就绪”函数。由于脚本标记位于所有元素下方,因此 DOM 将准备好进行操作!
编辑:阅读:http : //developer.yahoo.com/performance/rules.html#js_bottom
放置的方面之一是性能。请参阅YSlow 讨论中的这篇精美文章,了解为什么有时建议您将它们放在文档底部。
至于作用域问题,据我所知,Javascript 的常用可见性规则(在函数内部或外部定义的变量、局部、全局、闭包等)不受影响。
脚本标签的位置很重要。如果您将函数与文档元素绑定,那么在我们实现函数之前必须首先加载文档元素。假设 getTeachers() 是 getTeachers.js 文件中的函数。这会给你一个错误:
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unit Teachers</title>
<head>
<script type="text/javascript" src="getTeachers.js"></script>
<script type="text/javascript">
document.getElementById("buttonId").onclick=function(){getResults()};
</script>
</head>
<body>
<form>
<input type = "button" id="buttonId" value = "Press for Results" /><br />
</form>
<span id="results" /></span>
</body>
</html>
它在首先加载 head 之前给出错误,并且找不到指定 id 的元素。下面的代码是更正:
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unit Teachers</title>
<head>
<script type="text/javascript" src="getTeachers.js"></script>
</head>
<body>
<form>
<input type = "button" id="buttonId" value = "Press for Results" /><br />
</form>
<script type="text/javascript">
document.getElementById("buttonId").onclick=function(){getResults()};
</script>
<span id="results" /></span>
</body>
</html>
如果您的脚本引用了页面上的 ID 而页面尚未呈现(即脚本在 HTML 之前,或者您的脚本是在 onload 时执行的,而不是 DOM 已准备好),您也会收到错误消息。