javascript - 为什么在 script 标签中设置 async 或 defer 时无法执行 Javascript 代码?
问题描述
我用JavaScript
在这样script tag
的:html
<script src="file.js" type="text/javascript"></script>
使用上面的代码,file.js
链接到我们的html页面。但是当我们在 , 中添加async
ordefer
时script tag
,file.js
不能在这些代码中执行:
<script src="file.js" type="text/javascript" async="async"></script>
<script src="file.js" type="text/javascript" defer="defer"></script>
请问你能帮帮我吗?为什么我遇到这样的问题?
此外,为了更清楚起见,我添加了一段由 file.js 加载组成的 html,如下所示:
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Dr.Kayvanfar</title>
<meta charset = "UTF-8" />
<link type="text/css" rel="stylesheet" href="Main_CSS.css" />
<noscript> Your browswer don't support JS</noscript>
</head>
<body>
<div id="container" style="width:1500px;margin-left:auto;margin-right:auto;color:blue;">
<div id="header" style="height:100px;background-color:rgb(0,0,0); margin-bottom:20px;margin-top:20px; color:rgb(255,255,255);padding-top:5%">
<span class="topheader">Future Students</span>
<span class="topheader">Current Students</span>
<span class="topheader">Research & Teaching</span>
<span class="topheader">Communities</span>
**<script src="file.js" type="text/javascript" async ></script>**
</div>
</body>
</html>
解决方案
它应该是:
<script src="file.js" type="text/javascript" defer></script>
// Or
<script src="file.js" type="text/javascript" async></script>
// Or
<script src="file.js" type="text/javascript" async defer></script>
何时使用哪一个:
- 如果脚本是模块化的并且不依赖任何脚本,则使用异步。
- 如果脚本依赖于任何其他脚本,则使用 defer。
虽然你可以同时使用:
如果您同时指定两者,则 async 在现代浏览器上优先,而支持 defer 但不支持 async 的旧浏览器将回退到 defer。
推荐阅读
- c - 解释内存静态堆分配
- ruby - Rubocop cop 找出类上是否存在方法
- wordpress - htaccess 重写路径在浏览器上保留旧路径
- java - Java Swing webEngine.executeScript 未在 HTML Javafx webview 中触发
- php - Cron 运行脚本但代码不执行
- java - 分段 ListView 仅显示一项
- jquery - jQuery未加载:加载资源失败:请求超时
- sql-server - T-SQL 查找大表的期间/注册间隔
- node.js - 填充字段的相等搜索
- json - 如何从 NY Times API 访问特定日期的每篇文章?