<script>标签书写位置

    今天在使用<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 οnclick="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 οnclick="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中,变量初始化需要另外想办法



  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值