原生js之script基本属性

async:异步执行脚本

defer:延迟脚本下载

src:要执行的代码外部文件地址

noscript:表示浏览器不支持或拒绝支持script脚本时出现的内容

async和defer

async和defer本质都是为了让脚本推迟到整个页面解析后再下载,不同的是async是异步无序的,而defer是同步有序的。

src是外部脚本文件地址

下面举例说明:

javascript 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<!-- 脚本延迟,脚本会被延迟到整个页面都解析完毕后在运行 -->
	<script defer src="js/初始script.js"></script>
	<script src="js/初始script.js"></script>
	<link rel="preload" href="js/初始script01.js">
	<body>
		<script>
			// 如何打印<\/script>
			console.log("<\/script>")
			demo()
			// 动态加载脚本
			let script=document.createElement('script')
			script.src='js/初始script01.js'
			script.async='false'
			document.head.appendChild(script);
		</script>
		<!-- 如果浏览器不支持脚本,或者支持脚本的功能被关闭 -->
		<noscript>
			<p>该浏览器不支持script脚本</p>
		</noscript>
	</body>
</html>

在上述代码中,加上defer的外部脚本文件可以实现延迟加载的效果,为了让浏览器显示空白页面的时间变短了,增强对应的性能优化。如果不想加defer也可以把script外部脚本代码放在body下面执行也可以实现相同的效果,在下面的script中我们想打印一个</script>,可以通过转义字符\来实现这个效果,同时下面的demo()实际上是defer引入的外部文件中的方法,在下面又解释了动态生成script外部脚本的实现流程,首先我们定义一个块变量script,用dom中的createElement,创建一个script元素,同时定义这个script元素下的src属性为想要的文件路径,默认情况下,这种创建方法是异步的,也就是async的模式下,但有的浏览器不支持async,所以我们要调用这个属性并给它赋false值,最后在文档流下的head标签加一个孩子节点,但同时这种方式获取到的资源对浏览器预加载器来说是不可见的,会影响它们在资源获取队列中的优先级。如果在head头后加上link标签,并且把rel设置成preload,则可以让预加载器知道这些动态请求文件的存在,并把创造好的script变量赋到HTML当中,最后就是当浏览器不支持脚本或者支持脚本的功能被关闭时,我们可以使用noscript来实现不支持的显示效果。

相关推荐
墨雨晨曦8814 分钟前
2026/01/20 java总结
java·开发语言
look ahead to23 分钟前
关于PYQT qt designer的网格布局 单控件占多行的处理
开发语言·qt·pyqt
王德博客23 分钟前
【C++继承】笔试易错题目
开发语言·c++·继承
卖个几把萌26 分钟前
解决 Python 项目依赖冲突:使用 pip-tools 一键生成现代化的 requirements.txt
开发语言·python·pip
Shirley~~28 分钟前
leetcode移除元素
javascript·数据结构·算法
黎雁·泠崖29 分钟前
Java字符串入门:API入门+String类核心
java·开发语言·python
AC赳赳老秦32 分钟前
Prometheus + DeepSeek:自动生成巡检脚本与告警规则配置实战
前端·javascript·爬虫·搜索引擎·prometheus·easyui·deepseek
MediaTea1 小时前
Python:MRO 解密 —— C3 线性化算法
java·开发语言
sunfove1 小时前
Python小游戏:在 2048 游戏中实现基于线性插值(Lerp)的平滑动画
开发语言·python·游戏
摘星编程1 小时前
React Native + OpenHarmony:Animated 弹簧动画实现代码
javascript·react native·react.js