网站首页 > 基础教程 正文
在Html中引入script脚本可以说是一大创举,它最早被网景公司在Netscape Navigator 2中实现。那么,script你真的会用script标签吗?通常我们说script是网页“动起来”的一个标志,为了更好地控制script脚本的加载时机,html规范规定了script的多个属性:
async
可选属性,用于表示立即开始下载脚本,但不能阻止其他页面动作,如下载资源、等待其他脚本下载。只对外部脚本有效。
charset
可选属性,用于配置src属性指定的代码字符集。基本可以忽略,大多浏览器已经做了兼容。
crossorigin
配置相关请求的CORS设置。默认不开启CORS。可以用来配置文件请求的凭据标志,默认不包含凭据。可能的值如下:
- anonymous:不包含凭据
- use-credentials:包含凭据
defer
表示文档解析和显示完成后再执行脚本,只对外部脚本有效。属于异步加载的一种方式。在IE7及更早版本,对行内script脚本也可以指定这个属性。
integrity
可选。允许对接收的资源和指定的加密签名以验证子资源的完成性。若接收到的资源签名与这个属性指定的签名不匹配,则页面报错,脚本停止执行。这个属性可以确保CDN不会提供恶意内容
src
可选属性,用于指定外部js的网络地址
type
可选属性。类似文件的Mimetype属性,默认为text/javascript,若是需要加载包含es模块的代码可以指定值为”module’。
nomodule
可选属性,兼容不支持ES6的浏览器,主要是IE11。
对于async、defer以及module,async情况下关于js的下载、解析任务拆分情况如下图:
综上可以总结如下:
- defer外部请求js与html异步请求,且defer会在html文档解析完成后再去执行js文件,即为js执行在domcontentload时间触发后再执行Js脚本。
- async外部请求js时会异步文件,文件请求完成后会中断html的解析去执行js文件,js执行完成后若Html还未解析完成则继续进行html解析。
- type=”module”的script标签若是未设置async或defer虎山行,则默认使用defer方式进行加载。
- 如上type=”module”的fetch分叉为引入外部js的请求过程。
noscript
针对之前不支持js的浏览器的问题,需要一个页面降级处理的方式,其实也就是兼容提示处理。所以,有了noscript标签这样的一个规范,可以用来被使用提示不支持js的浏览器提供的替代内容。现在基本是用于被禁用js的浏览器,可以提示让它开启js支持。
<!DOCTYPE html>
<html>
<head>
<title>示例页面</title>
<script src="example01.js" defer></script>
</head>
<body>
<noscript>本页面需要浏览器开启js支持</noscript>
</body>
</html>
- 上一篇: 我在 GitHub 上发现了一款骚气满满的字体
- 下一篇: 5.标准文档结构 文档结构图模板
猜你喜欢
- 2024-10-12 面试常客系列之跨域 java跨域面试题
- 2024-10-12 如何根治 Script Error. 如何根治神经性皮炎
- 2024-10-12 只用一个js文件,为你的网站加个黑暗模式
- 2024-10-12 闭包(一):闭包的9个应用场景 闭包一般用在什么地方
- 2024-10-12 LLM工程师应该如何防范提示注入?指导来了
- 2024-10-12 如何实现前端社交媒体分享功能 前端聊天功能如何实现
- 2024-10-12 「WWDC2018」-Web安全策略 web安全进阶
- 2024-10-12 「JS库」3个很棒的小众JavaScript库
- 2024-10-12 如何使用 如何使用验孕棒
- 2024-10-12 2 JavaScript核心 script标签 营养标签中的核心营养素
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)