首页 > 其他分享 >HTML中script 标签中的那些属性

HTML中script 标签中的那些属性

时间:2023-04-28 09:57:52浏览次数:40  
标签:脚本 defer 浏览器 script 标签 HTML async 加载 属性

在HTML中, <script> 标签用于嵌入或引用JavaScript代码。

在 <script> 标签中,有两个属性可以用来控制脚本的加载和执行方式: async 和 defer 。


当然这也是常见的一道面试题, async  和  defer 的作用和区别。

async 和 defer 属性都可以用于异步加载脚本,从而避免了在加载脚本时阻塞浏览器渲染页面的问题。但是它们的具体行为略有不同。

当使用 async 属性时,浏览器会异步地加载脚本,并在下载完成后立即执行脚本,而不会等待页面的其他内容加载完成。如果页面中有多个异步加载的脚本,它们的执行顺序是不确定的,取决于它们完成下载的时间。 async 属性适用于不依赖于其他脚本或文档解析顺序的独立脚本。

当使用 defer 属性时,浏览器会异步地加载脚本,但是会在文档解析完毕后,按照它们在页面中出现的顺序执行它们。因此,如果页面中有多个 defer 脚本,它们会按照它们在页面中的顺序依次执行。这对于依赖于文档结构或其他脚本的脚本非常有用,因为它们需要在文档解析完成后才能正确执行。

 


以下是一个简单的例子,展示了 async 和 defer 属性的不同行为:

<!DOCTYPE html>
<html>
  <head>
    <title>Script</title>
  </head>
  <body>
    <h1>Hello, script!</h1>
    <script src="script1.js" async></script>
    <script src="script2.js" defer></script>
  </body>
</html>

 

在这个例子中,我们在页面中引入了两个脚本: script1.js 和 script2.js 。其中, script1.js 使用了 async 属性,而 script2.js 使用了 defer 属性。

当浏览器解析这个页面时,它会异步地加载 script1.js ,但会继续解析页面并渲染内容。一旦 script1.js 下载完成,它会立即执行。在此期间,浏览器可能仍在解析和渲染页面。

对于 script2.js ,浏览器也会异步加载它,但是会等待页面解析完毕后才执行。因此, script2.js 的执行会在页面解析完毕后,按照它在页面中的出现顺序执行。

 

 



总结一下:

- 不带 async 或 defer 的脚本会立即加载并阻塞HTML解析。
- 带有 async 属性的脚本会异步加载并在加载完成后立即执行,可能在HTML解析完成之前或之后。
- 带有 defer 属性的脚本会延迟执行,直到HTML文档解析完成。
- 如果在一个 <script> 标签中同时使用了 async 和 defer 属性, async 属性会被忽略。

 




除了 async 和 defer 属性外, <script> 标签还有一些其他属性和特性:


1. src 属性:用于指定外部脚本文件的URL。如果设置了 src 属性, <script> 标签内部的JavaScript代码将被忽略。

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

 


2. type 属性:用于指定脚本的MIME类型。对于JavaScript,推荐使用 text/javascript 。但是,大多数浏览器默认将 <script> 标签识别为JavaScript,因此通常不需要显式设置 type 属性。

html
<script type="text/javascript" src="script.js"></script>


3. charset 属性:用于指定脚本文件的字符编码。这个属性已经不太常用,因为现在大多数浏览器和服务器默认使用UTF-8编码。

<script charset="UTF-8" src="script.js"></script>

 


4. crossorigin 属性:用于配置跨域资源共享(CORS)设置。当加载的脚本文件位于不同的域名下时,可以使用 crossorigin 属性来控制浏览器的跨域策略。

<script crossorigin="anonymous" src="https://script.com/script.js"></script>

 


5. integrity 属性:用于确保脚本文件的完整性。通过提供脚本文件的哈希值(例如,SHA-256、SHA-384或SHA-512),浏览器可以在加载文件时验证其完整性。

<script src="script.js" integrity="sha384-xxxxxxx"></script>

 


6. nomodule 属性:用于指定脚本不应在支持ES6模块的浏览器上执行。这可以用于向不支持ES6模块的旧浏览器提供回退脚本。

<script nomodule src="script.js"></script>

 


这些属性和特性使得 <script> 标签在不同的使用场景下更加灵活和易于配置。

标签:脚本,defer,浏览器,script,标签,HTML,async,加载,属性
From: https://www.cnblogs.com/ronaldo9ph/p/17360990.html

相关文章

  • js javascript js隐藏页面上有id的控件,隐藏页面上无控件包含的文字,控制页面控件属性
    1.隐藏页面上有id的控件varinput=document.getElementsByTagName("input");//获取页面所有inputfor(vari=0;i<input.length;i++){if(input.item(i).id.indexOf("txt")>=0)//判断input的id中是否包含txt字符串{......
  • mybatis定义sql语句标签之select 标签
    属性介绍:id:唯一的标识符.和Mapper接口定义方法名同名。parameterType:传给此语句的参数的全路径名或别名例:com.test.poso.User或user,目前很少用到。resultType:语句返回值类型或别名。注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType与resultMap不......
  • mybatis定义sql语句标签之insert标签
    这是非常核心的一个标签,CURD是mybatis的核心功能。insert元素相对于select元素要简单很多,mybatis会在插入之后返回一个整数,表示插入成功后插入的条数。真实项目中,使用最多的一个点要注意,在插入过程中返回一些自动主键。因为这个主键,在同一个事务中,还有其它用。例如级联。属性......
  • mybatis控制动态SQL拼接标签之foreach标签
    mybatis控制动态SQL拼接标签之foreach标签foreach标签主要用于构建in条件,可在sql中对集合进行迭代。也常用到批量删除、添加等操作中。这个标签在实际业务中非常常用,当然运维旧项目也会发现,有些坑,用java循环执行sql来表示批量插入。属性说明:collection:collection属性的值有三......
  • js javascript 鼠标触碰select下拉列表渐变出div层,鼠标离开渐变缩回
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-......
  • java 后台给前台传值,html:select,html:text等加载页面显示默认值的方法
    后台写request.setAttribute("dateCreated","黑色头发");前台接收:html:text<html:textproperty="dateCreated"value="${dateCreated}"/>html:select<html:selectproperty="accountsUser"va......
  • java js JavaScript 设置html:radio的默认选中, js也可以用el表达式
    <html:radioproperty="consumptionClass"value="花了">花了</html:radio><html:radioproperty="consumptionClass"value="赚了">赚了</html:radio><html:radioproperty="consumptionClass"va......
  • 前端JavaScript的精确计算问题
    问题发现"47.900000"*"771.65" = 36962.034999999996 (错误)  36962.035(正确)问题定位JavaScript前端计算不精确(浮点数计算的精确问题)问题解决除法函数,用来得到精确的除法结果说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比......
  • javascript通过按钮实现超链接
    <html:buttonproperty="PassWordReturnButton"onclick="PassWordReturnJavaScript();">返回</html:button><scriptlanguage="javascript"type="text/javascript">functionPassWordReturnJavaScript(){win......
  • 用struts标签实现给表里空字段的地方加上
    分页的表里的字段是动态的,所以加 也要动态来加,只要用到<logic:empty> </logic:empty>标签,他的功能是这个标签判断参数如果是空就显示<logic:empty> </logic:empty>中间的值放这个 的目的是因为不加这个的话空出来的格是鼓出来的,难看下边的是例子的代......