script标签有两种用途:
它要依赖于src属性的存在。上面两种情况都需要</script>闭合标签。
script标签可以包含下面的属性:
src=”url”
src属性是可选的。如果存在src属性,它的值应是一个url(网址)表示的.js文件。当浏览器加载,编译与执行文件时,页面将停止装载与处理。<script src="url">与</script>之间不应有任何内容(保持空白)。
如果没有src属性,<script>与</script>之间的文字可被编译与执行。script不能包含序列
</
因为可能与</script>混淆。可以插入反斜线符号在<与/之间避免此问题。
<\/
反斜线将被JavaScript编译器忽略。
不要使用<!– //–>这种hack脚本。这种方法可以阻止第一代浏览器(Netscape 1和Mosaic)将脚本显示成文字。已经有很长时间不需要这么做了。<!– //–>是一个HTML注释。注释中的脚本将被忽略,不被编译与执行。同样,HTML注释不包括–,因此脚本将忽略HTML错误。
language=”javascript”
这个属性是不赞成使用的。它被用于选择其它的程序语言或特殊版本的JavaScript。尽量避免使用。
type=”text/javascript”
这个属性是可选的。自从Netscape 2所有浏览器默认的编程语言已经都是JavaScript了。在XHTML中,这个属性是必须的。在HTML中最好不要使用此属性。浏览器可以自行解决。
defer
这个属性试图改变组件在页面中的加载时机。它不能被很好的支持,不要使用此属性。
for=”name” event=”name”
这些属性是微软(Microsoft)的私有属性,用于声明事件句柄。这是不标准的。尽量避免使用。
<script src="url"></script>将阻碍页面的其它组件下载,直到script脚本加载、编译、执行完毕。因此越晚调用脚本越 好,以便加载图像和其它组件不被延时。 加载脚本将增加感觉中的与实际的页面加载时间。因此通常最好把所有的<script src="url"></script>放置在</body>之前。一个页面内的<script>在加载时没 有明显的影响。
如果一个脚本定义了一些用于其它函数的函数与数据,那么必须在用这些函数与数据之前完成定义。因此定义脚本后才可以使用脚本。
document.write提供了一种将字符串写入HTML页面的方法。有更好的方法这样做,例如.innerHTML和.createElement或者HTML克隆样式(HTML cloning patterns),用于避免使用document.write。
document.write强制性的依赖于加载时机。如果document.write在onload事件前被调用,它会在一个页面中附加或插入文字。如果在onload事件后被调用,它将完全替换页面,摧毁前面完成的所有内容。
document.write使脚本与标记混合起来,助长了坏的结构。清晰的结构尽少使脚本与标记混合使用。
令人惊讶的是src属性不被同源策略(Same Origin Policy)约束。这意味着一个脚本元素可以产生于任何服务器并且加载脚本与执行脚本。如果脚本引发JSON 编码的数据传送,这是很有用的。不幸的是没有方法可以在执行前限制与检查脚本。它同页面的其它脚本一样有权利运行。脚本能存取与使用自带的小甜饼 (cookies)。它可以存取原始服务器信息用于用户的授权。它可以检查DOM或JavaScript全局对象(global object),而且可以为世界上的任何地方发送信息。脚本骇客标签(Script Tag Hack) 是不安全的并且应该避免使用。