zoukankan      html  css  js  c++  java
  • script标签

    script 元素既可以包含脚本语句,也可以通过 src 属性指向外部脚本文件。默认情况下script标签的会阻止文档渲染,相关脚本会立即下载并执行

    属性

    在HTML5中script主要有以下几个属性:async,defer,charset,src,type

    • async(可选):

        关键词:外部文件,异步下载,异步执行;

        当标签中包含这个属性时会立即下载脚本(外部文件),下载的同时页面继续解析,一旦脚本可用,则会异步执行不会阻塞DOM的渲染  

                多个带有async的脚本,并不会按着script在页面中的顺序来执行,而是谁先加载完谁执行。

                  ps:HTML5的新特性,这意味着其兼容性并不乐观(IE10+)

           <script src="js/index2.js" async="async"></script>   

    • defer(可选):

        关键词:外部文件,异步下载,延迟执行(等页面解析完);

        当标签中包含这个属性时,脚本再页面完全被解析或显示之后执行

                  同时存在多个带有defer的脚本,按照顺序执行所有的script不会阻塞DOM的渲染 

                defer脚本会在文档渲染完毕后,DOMContentLoaded事件调用前执行。

                  ps:HTML5会忽略嵌入脚本所设置defer属性,目前只有IE4~IE7还支持defer属性,IE8以后完全遵循HTML5的标准

         <script src="js/index1.js" defer="defer"></script> 

    • charset(可选):

        关键词:字符集

        大多数浏览器已经忽略它的值了,所以很少有人使用。

    • src(可选):

        关键词:外部引用

        表示需要引用的外部文件的地址。

    • type(可选):

        关键词:MIME(脚本语言的内容类型)

        为保证最大限度的浏览器兼容,type的属性值主要时候用的依旧是text/javascript,如果没有写这个属性,其默认值仍然为text/javascript。

                  另外,在非IE浏览器中还可以使用以下值:application/javascript 和application/ecmascript。

     注意:在引用外部文件,标签中不要加入其它JS代码,浏览器在解析时,只会下载src引用的外部脚本文件,表中内嵌入的代码将会被忽略。

    推文:浅谈script标签中的async和defer

    defer和async两个属性是可以互相影响的

    简单的归纳:

    • 仅有async属性,脚本会异步执行
    • 仅有defer属性,脚本会在文档解析完毕后执行
    • 两个属性都没有,脚本会被同步下载并执行,期间会阻塞文档解析

    规范里没有提到两种属性都有时的效果,但这是文档中被允许的。

    扩展:document.write()

    标签位置

    通常,我们会把带有外部文件的的标签(包括CSS文件,JavaScript文件)的引用放在相同的位置,一般是在<head>标签里面。

    但是在解析过程中一旦遇到多个JavaScript外部文件,就要等到所有的外部文件加载完成后,页面才能完全显示,所以通常我们会把它放在<body>标签里的底部,如下所示:

     引用外部文件的优点

    • 利于维护:把所有的JavaScript的文件放在一起,不仅可以不触及HTML代码,而且更有利于开发者进行代码的编写和维护。
    • 加速浏览:如果有多个HTML页面引用了同一个JavaScript外部文件,这个文件只会加载一次(缓存),也就是说可以加快页面的加载速度。
    • 安全性:引用外部文件,如果用户查看HTML代码,将不会看到JavaScript的代码,比写在标签内安全性更高一些。
  • 相关阅读:
    面向对象设计原则之二:开放封闭原则
    面向对象设计原则之一:单一职责原则
    设计模式之四:适配器模式(Adapter Pattern)
    面向对象设计原则之六:合成/聚合复用原则
    设计模式之三:迭代器模式(IteratorPattern)
    面向对象设计原则之五:迪米特法则
    设计模式之二:观察者模式(Observer Pattern)
    五分钟搭建 Flash 视频直播站
    Flash Media Server 3 开发版供下载
    不掉线的路由器路由特殊技术分析
  • 原文地址:https://www.cnblogs.com/yaoyao-sun/p/10371095.html
Copyright © 2011-2022 走看看