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…...
Ubuntu服务器部署千问3.5-2B:生产环境最佳实践
Ubuntu服务器部署千问3.5-2B:生产环境最佳实践 1. 准备工作与环境检查 在开始部署前,我们需要确保服务器环境满足基本要求。千问3.5-2B作为一款中大规模语言模型,对硬件资源有一定需求。 1.1 硬件要求 建议生产环境配置至少满足以下条件&…...
Nanbeige 4.1-3B 自动化运维脚本生成:基于Python的服务器监控与告警
Nanbeige 4.1-3B 自动化运维脚本生成:基于Python的服务器监控与告警 1. 引言 想象一下这个场景:凌晨三点,你的手机突然响起刺耳的警报。你睡眼惺忪地打开一看,是生产服务器的磁盘满了,导致核心服务全部宕机。你一边手…...
Kylin V10系统下KVM虚拟化环境搭建与虚拟机快速部署指南
1. Kylin V10系统与KVM虚拟化基础 作为国产操作系统的代表,Kylin V10凭借其出色的稳定性和安全性,在政务、金融等领域得到广泛应用。我在多个企业级项目中实测发现,其x86架构下的KVM虚拟化性能表现优异,完全能满足生产环境需求。要…...
ZLUDA终极实践指南:在非NVIDIA GPU上无缝运行CUDA程序的完整方案
ZLUDA终极实践指南:在非NVIDIA GPU上无缝运行CUDA程序的完整方案 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA ZLUDA是一个革命性的开源项目,它让开发者和研究者能够在非NVIDIA GPU上…...
Vite项目静态资源复制终极指南:vite-plugin-static-copy插件实战详解
Vite项目静态资源复制终极指南:vite-plugin-static-copy插件实战详解 在现代化前端工程中,静态资源的高效管理往往决定着项目的可维护性和扩展性。当项目需要支持多主题切换、多环境部署或复杂资源分发时,如何在构建流程中智能处理静态文件就…...
Swift-All全流程体验:快速上手文本生成与多模态模型
Swift-All全流程体验:快速上手文本生成与多模态模型 1. 认识Swift-All:一站式大模型工具箱 1.1 什么是Swift-All? Swift-All是魔搭社区推出的大模型与多模态模型全流程开发框架。它最大的特点是支持600文本大模型和300多模态模型的训练、推…...
ZYNQ UltraScale+ MPSoC OpenAMP 2018.3实战:从APU到RPU的高效通信实现
1. 初识ZYNQ UltraScale MPSoC与OpenAMP框架 第一次接触ZYNQ UltraScale MPSoC平台时,我被它独特的异构计算架构深深吸引。这个强大的SoC将四核Cortex-A53处理器(APU)和双核Cortex-R5处理器(RPU)集成在同一芯片上&…...
ACPL-M61U-500E,宽温高共模抑制比高速数字光耦合器
简介今天我要向大家介绍的是 Broadcom 的数字光耦合器——ACPL-M61U-500E。它是一款单通道高速逻辑门光耦合器,采用紧凑型、兼容自动插入的5引脚SO-5表面贴装封装。该器件内部通过绝缘层将AlGaAs发光二极管与集成高增益光探测器进行电隔离,输出端为开路集…...
基于cruise的仿真模型搭建及效果分析:丰田氢能源车型在wltc工况下的跟随优势
基于cruise的燃料电池功率跟随仿真,按照丰田氢能源车型搭建,在wltc工况下跟随效果好,最高车速175,最大爬坡30,百公里9s均已实现。 1.模型通过cruise/simulink联合仿真,策略通过MATLAB/Simulink搭建的多点恒…...
我好像会被 Agent 淘汰,我用数据算了一算遮
OCP原则 ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则(DIP) 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程, 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...
