JS知识点---在HTML中使用JavaScript

1、在HTML中使用JavaScript

1.1 <script>标签
需要注意的是,带有src属性(src="****.js" 这是代表外部脚本文件)的<script>元素不应该在其<script>和</script>标签之间(这代表嵌入的代码)再包含额外的JavaScript代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会别忽略。

1.2 标签的位置
  <script></script>标签最好放在<body>元素中页面内容的后面。
  原因:包含在<script></script>元素内部的JavaScript代码将被从上至下一次解释。按照惯例,我们会放在<head></head>标签中,这意味着必须等到全部JavaScript代码都被下载、解析和执行完成以后,才能开始呈现页面的内容(浏览器在遇到<body>标签才开始呈现内容)。所以对于那些 需要很多JavaScript代码的页面来说。这无疑会导致浏览器在呈现页面时出现明显的延迟,浏览器窗口将是一片空白。所以为了避免这个问题,<script></script>标签最好放在<body>元素中页面内容的后面。

1.3  延迟脚本
<script>标签定义了defer属性(只适用于外部脚本文件),表明脚本在执行时不会影响页面构造,脚本会被延迟到整个页面全部解析完毕再运行。在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延时执行。
注意项:
(1)最好只包含一个延迟脚本。
(2)把延迟脚本放在页面底部依旧是最佳选择。
(3)在XHTML文档中,要把defer属性设置为defer="defer"。
(4)如果有多个,会按照它们出现的先后顺序执行,因此eg1会eg2先执行。
eg1:<script type=text/javascript" defer="defer" src="***1.js"></script>
eg2:<script type=text/javascript" defer="defer" src="***2.js"></script>

1.4  异步脚本
<script>标签定义了async属性(只适用于外部脚本文件,并告诉浏览器立即下载文件),与defer属性不同的是,标记为async的脚本并不保证按照指定它们的先后顺序执行。
eg1:<script type=text/javascript" async src="***1.js"></script>
eg2:<script type=text/javascript" async  src="***2.js"></script>
eg2可能会在eg1之前先执行,因此确保两者之间互不依赖很重要。
为什么定义这个async属性呢?
答案就是:不让页面等待两个脚本下载和执行,可以异步加载页面其他内容,为此,建议异步脚本不要在加载期间修改DOM。

1.5  在XHTML中使用JavaScript
XHTML(可扩展超文本标记语言)是将HTML作为XML的应用而重新定义的一个标准。编写XHTML代码的规则要比HTML严格得多。
举个栗子:
<script type="text/javascript">
 function compare(a,b){
if(a < b){
alert("a小于b");
}else if(a > b){
alert ("a大于b") ;
}
}
</script>
这里的小于号“<”,在XHTML中将被当作开始一个新标签来解析,但作为标签来讲,小于号后面是不能跟空格的,因此会导致错误。
那该如何解决呢?
在兼容XHTML的浏览器中,我们可以用一个CData片段来包含JavaScript代码。
引入CData片段后的JavaScript代码如下:
<script type="text/javascript">
<![CDATA[
 function compare(a,b){
if(a < b){
alert("a小于b");
}else if(a > b){
alert ("a大于b") ;
}
}
]]>
</script>
而在不兼容XHTML的浏览器中,我们利用JavaScript注释将CData标记注释掉就可以了
<script type="text/javascript">
//<![CDATA[
 function compare(a,b){
if(a < b){
alert("a小于b");
}else if(a > b){
alert ("a大于b") ;
}
}
//]]>
</script>

1.6  <noscirpt>元素
早起浏览器都面临一个特殊的问题,即当浏览器不支持JavaScript时如何让页面平稳地退化。最终解决方案就是创造一个<noscript>元素,用在不支持JavaScript的浏览器中显示替代的内容。这个元素可以包含能够出现在文档<body>中的任何HTML元素--<script>元素除外。包含在<noscript>元素中的内容只有在下列情况下才会显示出来:
(1)浏览器不支持脚本
(2)浏览器支持脚本,但脚本被禁用
符合上述任意一个条件,<noscirpt>中的内容都会在浏览器中显示,除此之外的情况,浏览器不会呈现内容。

猜你喜欢

转载自blog.csdn.net/qq_39178993/article/details/81234369