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…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...