您的位置:首页 > 其它

<script>标签书写位置

2014-09-03 18:11 330 查看
今天在使用<script>标签时,发现了一个问题,同样的代码在IE和其他浏览器上的展示有所区别,仔细排查原因,发现可能是<script>标签引入脚本的位置产生了问题,网上整理了一下资料,更加深入了对<script>引入外部文件的使用。

首先是,引入外部脚本的语法及其注意事项(参考:http://blog.163.com/xuxiaoqianhz@126/blog/static/165190577201061493832906/)

引用外部脚本的语法:
<script language=”javascript” type=”text/javascript” src=” ”></script>
其中的src=” ”中填写同级目录下的外部脚本文件名
注意事项:
1) 外部脚本文件可以是任意扩展名,浏览器会根据<script>标签中的type属性值和language属性值,判断使用哪种解析器来解析外部脚本文件。通常开发者会将JavaScript外部脚本的扩展名设为.js。
2) 在外部脚本文件中,只能包含脚本语言代码,不能包含其他代码(如HTML代码等),也不能包含<script>标签(script元素属于HTML语言中的元素)。
3) 在引用外部脚本文件时,<script>标签与</script>标签之间不能有其他代码,包括脚本语言代码。
4) 虽然在引用外部脚本文件时,<script>标签与</script>标签之间不能有其他代码,但</script>标签也不能被省略。

关于<script>标签的位置:HTML文档的大致结构为:
<html>
<head>
</head>

<body>
</body>

</html>
由此<script>标签的位置,猜想可以在html标签以外,或者在head标签内,或者在body标签内,或者在head和body标签之间,但查了很多资料,发现<script>标签的位置基本是第二和第三种。
关于第一种,网上不是很常见,就看到一个地方:http://tieba.baidu.com/p/1263068026,确实通过检验,发现各大浏览器将其移进了<head>中。
第四种没有找到资料。
现在说说第二种和第三种:(http://www.cnblogs.com/ddyq/archive/2012/03/06/2382816.html)
w3c建议放到head标签中,

在HTML body部分中的JavaScripts会在页面加载的时候被执行。

在HTML head部分中的JavaScripts会在被调用的时候才执行。

——————————————————————————

JavaScript应放在哪里

页面中的JavaScripts会在浏览器加载页面的时候被立即执行,我们并不希望总是这样,有时候我们想让一段脚本在页面加载的时候执行,而有时候我们想在用户触发一个事件的时候执行脚本。

head 部分中的脚本: 需调用才执行的脚本或事件触发执行的脚本放在HTML的head部分中。当你把脚本放在head部分中时,可以保证脚本在任何调用之前被加载。
<html>
<head>
<script type=”text/javascript”>
….
</script>
</head>
body 部分中的脚本: 当页面被加载时执行的脚本放在HTML的body部分。放在body部分的脚本通常被用来生成页面的内容。

<html>
<head>
</head>
<body>
<script type=”text/javascript”>
….
</script>
</body>


body 和 head 部分可同时有脚本:你可在文件中放无数的脚本,因此你的文件中可以在body和head部分同时存在脚本。

<html>
<head>
<script type=”text/javascript”>
….
</script>
</head>
<body>
<script type=”text/javascript”>
….
</script>
</body>


外部脚本的使用

有时候你可能想在几个页面中运行同样的脚本程序, 而不需在各个页面中重复的写这些代码。这时你就要用到外部脚本。你可以把脚本写在一个外部文件中,保存在扩展名为 .js的文件中。

注意:外部脚本文件中不要包含标记符<script>!

使用外部脚本时将标记符<script> 的“src”属性值指向相应的.js文件就可以了:

<html>
<head>
<script src=”xxx.js”></script>
</head>
<body>
</body>
</html>


注意: 记得这个指向外部脚本文件的script标记符就放在你通常会写脚本的地方!

1:将JavaScript标识放置<Head>... </Head>在头部之间,使之在主页和其余部分代码之前预先装载,从而可使代码的功能更强大; 比如对*.js文件的提前调用。 也就是说把代码放在<head>区在页面载入的时候,就同时载入了代码,你在<body>区调用时就不需要再载入代码了,速度就提高了,这种区别在小程序上是看不出的,当运行很大很复杂的程序时,就可以看出了。当然也可以将JavaScript标识放置在<Body>... </Body>主体之间以实现某些部分动态地创建文档。 这里比如制作鼠标跟随事件,肯定只有当页面加载后再进行对鼠标坐标的计算。或者是filter滤镜与javascript的联合使用产生的图片淡入淡出效果

2:放入html的head,是页面加载前就运行,放入body中,则加载后才运行javascript的代码~~~

所以head里面的先执行。

3:要是function就没有区别要是<script>alert(1)</script>会跟放的位置有关一个事head加载完就 alert 一个是要跟在body中加载循序alert

客户端脚本一般放在 <head> </head> 之间,而且要用 <!-- --> 把代码括起来。

如果浏览器不支持此脚本,那么浏览器会

跳过它,不去执行,也不会提出错误信息

另外,补充一个区别:(http://blog.csdn.net/jsjszg/article/details/8171145)

如果有不在函数中的执行语句,比如变量初始化,如果在head中就不会执行。

1,在head中时,所代表的functions只加载而不执行,执行是在某一事件触发后才开始。
2,在body中时,直接加载并执行

典型的区别:

如果有不在函数中的执行语句,比如变量初始化,如果在head中就不会执行。

例如:

<html>
<head>
<title>第一个Html5视频测试</title>
<script type="text/javascript">
var myVideo=document.getElementById("video1");

function playPause()
{
if (myVideo.paused)
myVideo.play();
else
myVideo.pause();
}
</script>
</head>
<body>
<div style="text-align:center;">
<button onclick="playPause()">播放/暂停</button>
<br/>
<video id="video1" src="mov_bbb.ogg" width="320" height="240" controls="controls">
Your browser does not support the video tag.
</video>
</div>
</body>
</html>


点击“播放/暂停”时,playPause会被执行,但执行时myVideo对象没有定义的,因为定义和初始化语句被有执行过。
如果要执行,需要放在body

<html>
<head>
<title>第一个Html5视频测试</title>
</head>
<body>
<div style="text-align:center;">
<button onclick="playPause()">播放/暂停</button>
<br/>
<video id="video1" src="mov_bbb.ogg" width="320" height="240" controls="controls">
Your browser does not support the video tag.
</video>
</div>
<script type="text/javascript">
var myVideo=document.getElementById("video1");

function playPause()
{
alert("AA");
if (myVideo.paused)
myVideo.play();
else
myVideo.pause();
}
</script>
</body>
</html>
当然,javascript放在head中有其他的好处的,所以,如果必须放在head中,变量初始化需要另外想办法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: