HTML <script>元素的10个属性
将javascrip插入HTML的主要方法是使用<script>元素,这个元素是网景公司(Netscape)创造出来的,script 元素所属类型因其用法而异。位于 head 元素中的 script 元素属于元数据元素,位于其他元素(如 body 或 section)中的则属于短语元素。
script的10个属性
1、async
可选。只对外部文件有效,HTML5中新增属性,用于定义一个异步执行的脚本;该属性表示应该立即下载src属性指定的脚本资源,但不能阻止其他页面动作,比如下载资源或其他脚本加载,即不必等该异步脚本下载和执行后再加载页面,同样也不必等到该异步脚本下载和执行后再加载其他脚本;当有多个添加了async属性的脚本时,不能保证执行顺序和出现顺序一致;所以要避免异步执行脚本之间存在依赖关系
<script async src="https://www.somewhere.com/index.js"></script>
2、charset
可选。规定在外部脚本文件中使用的字符编码。这个属性很少使用,因为大多数浏览器不在乎它的值,在w3c的script标签属性列表已经没有列出这个属性
<script type="text/javascript" src="myscripts.js" charset="UTF-8"></script>
常用字符集如下:
- UTF-8 - Unicode 字符编码
- ISO-8859-1 - 拉丁字母表的字符编码
如需查看所有可用的字符集,可以在w3c查看 :HTML 字符集
3、crossorigin
可选。配置相关请求的CORS(跨域资源共享)设置,默认不使用CORS。
- crossorigin = "anonymus":表示文件请求不必设置凭据标志
- crossorigin ="use-credentials": 需要设置凭据标志,出站请求会包含凭据
<script src="https://www.somewhere.com/index.js" crossorigin="anonymous|use-credentials">
4、defer
可选,表示脚本需要立即下载但可以延迟到文档完全被解析和显示之后再执行,即推迟执行脚本
<script defer src="https://www.somewhere.com/index.js"></script>
注意,HTML5规范要求脚本应该按照他们出现的顺序执行,理论上,第一个被推迟的脚本会比第二个 被推迟的脚本先执行,且被推迟执行的脚本都会在DOMContentLoaded事件之前执行,但实际上这个顺序无法保证,所以,最好只包含一个加defer的延迟执行的脚本
5、intergrity
允许比对接受到的资源和指定的加密签名(一般是一个hash值)以验证子资源完整性,如果接收到的资源的签名与这个属性指定的签名不匹配,则页面会报错了,脚本不会执行,这个属性可以用于确保CDN不会提供恶意内容
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous">
</script>
主要起到安全防护的作用,比如:
- 减少由托管在 CDN 的资源被篡改而引入的 XSS 风险
- 只下载资源源站的指定资源
- 如果http协议请求的资源,可以避免,在通信过程中请求资源被篡改而导致的XSS风险
6、src
可选,表示包含要执行的代码的外部文件,规定外部脚本文件的 URL
<script src="myscripts.js"></script>
src的值可以是可以是外部url也可以是站内文件:
-
绝对 URL - 指向另一个网站(如 src="http://www.example.com/example.js")
-
相对 URL - 指向网站内的文件(如 src="/scripts/example.js")
注意:外部脚本文件内容中不能包含 <script> 标签。
7、language
已弃用,最初用于表示代码块中的脚本语言,在w3c的script标签属性列表已经没有列出这个属性
8、type
可选,代替language,规定脚本类型,常用值是 JavaScript MIME 类型,如果没有指定type的值,浏览器会假定使用的是 JavaScript,此属性默认值是:application/javascript,还有一个常用值是:application/ecmascript
<script type="application/javascript">
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
9、referrerpolicy(补,红宝书没列但w3c有列出)
可选,规定在获取脚本时要发送的引用者信息
<script src="myscripts.js" referrerpolicy="origin-when-cross-origin"></script>
可取值如下:
| no-referrer | 不发送引用者信息。 |
| no-referrer-when-downgrade | 默认值。如果协议安全级别保持不变或更高(从 HTTP 到 HTTP,从 HTTPS 到 HTTPS,从 HTTP 到 HTTPS 是可以的),则发送原始来源、路径和查询字符串。 如果协议安全级别较低(从 HTTPS 到 HTTP 不行),则不发送任何内容。 |
| origin | 发送文档的来源(协议、主机和端口)。 |
| origin-when-cross-origin | 对于跨域请求,发送文档的来源。对于同源请求,发送文档的来源、路径和查询字符串。 |
| same-origin | 对于同源请求,发送引用者(referrer)。对于跨域请求,不发送引用者。 |
| strict-origin-when-cross-origin | 如果协议的安全级别保持不变或更高(从 HTTP 到 HTTP,从 HTTPS 到 HTTPS,以及从 HTTP 到 HTTPS 都可以),则发送来源信息。 对于较低安全级别(从 HTTPS 到 HTTP),则不发送任何内容。 |
| unsafe-url | 发送来源、路径和查询字符串(无论安全级别如何)。请谨慎使用此值! |
10、nomodule(补,红宝书没列但w3c有列出)
规定脚本不应在支持 ES2015 模块的浏览器中执行。
可取值为
- True
- False
ps:本文基于红宝书第4版,并结合w3c的学习小笔记,若有不恰当之处,欢迎交流
相关文章:
HTML <script>元素的10个属性
将javascrip插入HTML的主要方法是使用<script>元素,这个元素是网景公司(Netscape)创造出来的,script 元素所属类型因其用法而异。位于 head 元素中的 script 元素属于元数据元素,位于其他元素(如 bod…...
NX二次开发:ListingWindow窗口的应用
一、概述 在NX二次开发的学习中,浏览博客时发现看到[社恐猫]和[王牌飞行员_里海]这两篇博客中写道有关信息窗口内容的打印和将窗口内容保存为txt,个人人为在二次开发项目很有必要,因此做以下记录。 ListingWindow信息窗口发送信息四种位置类型 设置Listi…...
设计模式-结构型模式-外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP] 首先,定义子系统的各个组件接口和具体实现类: // 子系统组件接…...
C++学习第四天(类与对象下)
1、构造函数的其他知识 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值 构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函…...
【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑
之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践,主要关注在MetaGPT入门和单智能体部分(系列文章附在文末,感兴趣的可以看下)。现在新的教程来了,新教程主要关注多智能体部分。 本系列文章跟随《M…...
python自动化管理和zabbix监控网络设备(无线AC控制瘦ap配置部分)
目录 前言 拓扑 一、AC-SW1 二、Core-sw1 三、Core-sw2 四、汇聚层 五、AC1 六、SW1-6 七、DMZ区域 前言 具体原理和操作可以访问我的主页视频 白帽小丑的个人空间-白帽小丑个人主页-哔哩哔哩视频 拓扑 一、AC-SW1 sys sysname AC-SW1 vlan batch 100 200 210 220 2…...
XSS中级漏洞(靶场)
目录 一、环境 二、正式开始闯关 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 一、环境 在线环境(gethub上面的) alert(1) 二、正式开始闯关 0x01 源码: 思路:闭…...
etcd java 客户端jetcd库踩坑日志
问题 Q: EtcdException: Unable to resolve endpoints [http://0.0.0.0:2379/] A: 经过测试,endpoints最后的斜杠不能写,完整的endpoints是http://0.0.0.0:2379 Q: java.lang.NoSuchMethodError: io.netty.buffer.Po…...
<网络安全>《61 微课堂<第1课 南北向流量是什么?>》
1 形象化解释 在网络安全中,经常听到南北向流量这个词。那究竟是什么意思呢? 这里的南北,就是地图上的东西南北,是方向。我们在画网络架构图时,往往是由上到下依次是web层、应用层、数据层,流量从web层到…...
Day12-【Java SE进阶】JDK8新特性:Lambda表达式、方法引用、常见算法、正则表达式、异常
一、JDK8新特性 1.Lambda表达式 Lambda表达式是JDK 8开始新增的一种语法形式;作用:用于简化名内部类的代码写法。 注意:Lambda表达式并不是说能简化全部匿名内部类的写法,只能简化函数式接口的匿名内部类。 有且仅有一个抽象方法的接口。注意:将来我们见到的大部…...
go mod中如何解决 xxx/yyy/lib@v1.1.0: unrecognized import path
需要检查的几个地方 这个错误通常出现在 Go 模块系统无法找到指定版本的模块时。有几种可能的原因和解决方法: 模块未被发布或标记: 确保 xxx/yyy/lib 模块的版本 v1.1.0 已经被正确地发布或标记。你可以在对应的 GitLab 仓库中查看是否存在 v1.1.0 标签…...
比较Python和Rust的内存管理机制
大家好,内存管理是编程语言的基础,它确保着资源被有效利用,不同的编程语言采用不同的策略来管理内存。有些语言需要程序员手动管理内存,有些语言则自动化了内存管理过程。Python和Rust都采用了垃圾收集(Garbage Collec…...
Linux系统——Shell脚本——一键安装LNMP
#!/bin/bash #安装nginx echo "安装nginx服务" wget http://nginx.org/download/nginx-1.11.4.tar.gz &>/dev/null if [ $? -eq 0 ] thenecho "nginx-1.11.4安装包下载完成"echo "--开始安装必要的依赖文件--"yum install -y gcc gcc-c…...
算法复习之二分【备战蓝桥杯】
二分模板一共有两个,分别适用于不同情况。 算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l r时,我们就找到了目标值。 版本一 当我们将区间[l, r]划分成[l, mid]和[mid 1, r]时,其更…...
如何做代币分析:以 SHIB 币为例
作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:SHIB Token Dashboard (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关…...
Springboot+vue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
演示视频: Springbootvue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层…...
https://htmlunit.sourceforge.io/
https://htmlunit.sourceforge.io/ 爬虫 HtmlUnit – Welcome to HtmlUnit HtmlUnit 3.11.0 API https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.70.0 https://s01.oss.sonatype.org/service/local/repositories/releases/content/org/htmlunit…...
回文链表(leetcode)
我自己第一个写的代码: bool isPalindrome(struct ListNode* head){struct ListNode* tail NULL;struct ListNode* pos NULL;if( head->next NULL){return true;}while( 1 ){if( head->next NULL || (head->next->next NULL && head->…...
大语言模型(LLM)技术名词表(一)
LLMs on a Phone:指在手机设备上运行的大型语言模型。 Scalable Personal AI:指用户可以在个人设备上对AI模型进行微调的技术。 Responsible Release:发布AI模型时考虑社会、法律和伦理影响的做法。 Multimodality:AI模型能处理…...
C++ 快速排序快速选择
目录 1、75. 颜色分类 2、912. 排序数组 3、 215. 数组中的第K个最大元素 4、LCR 159. 库存管理 III 1、75. 颜色分类 思路:利用快速排序思路,使用三指针分块进行优化。 [0,left]——小于key[left1,right-1]——等于key[right,nums.size()]——大于k…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
