script元素

script标签的作用就是将js插入到HTML

属性表示不同的场景

  1. async

  2. defer

  3. src

  4. type

  5. crossorigin

  6. charset

使用script标签的注意点

不要出现在字符串中出现 </script> , 浏览器会当成结束标签解析

解决方案 : 转义 <\/script>

script的标签位置

放在<head></head>标签中, 就意味着必须把js代码解析完成之后, 才开始渲染页面

执行到 <body></body> 标签时才开始渲染页面

此时会有一个问题存在 如果我script的标签有10000+那我的页面岂不是显示的很慢?

完美的做法 ------> script标签放在body标签的最后位置

<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
​
<body>...................<script src="demo1.js"></script><script src="demo2.js"></script>
</body>

script 场景一 --- 推迟执行脚本 ( 仅限于script标签引入外部js文件 ) --- defer属性

script 标签 设置 defer 属性时, 被认为立即下载, 最后执行

最后两个脚本可能会在 DOMContentLoaded 事件前或后可能按顺序执行

如果你觉得这是个问题 ---- 那就推迟一个脚本

<head>.....<title>Document</title><script defer src="demo1.js"></script><script defer src="demo2.js"></script>
</head>

script 场景二 --- 异步执行脚本( 仅限于script标签引入外部js文件 ) --- async属性

script 标签 设置 async 属性时, 被认为立即下载不阻塞加载dom, 不保证执行顺序

设置 async 属性 告诉浏览器 你不必等我加载完或执行完再去加载页面和执行其他脚本

  <script async src="demo1.js"></script> console.log(1)<script defer src="demo2.js"></script> console.log(2)执行结果 可能是 1 , 2  也可能是 2, 1

script 场景三 --- 动态加载脚本

实现原理 : createElement(' script ') 创建script元素 追加时默认 async 属性为 true

<body>...................<button>动态加载脚本</button><script>const btn = document.getElementsByTagName('button')btn[0].addEventListener('click', () => {const script = document.createElement('script')script.src = 'demo2.js'document.head.appendChild(script)})</script>
</body>

弊端 (红宝书原话) : 这种方式动态加载资源对浏览器预加载器是不可见的 , 这会影响资源在获取队列中的优先级 , 可能会影响性能

解决方案 : 告诉浏览器我可能要动态的加载资源文件

<head>...............<script src="demo1.js"></script><link rel="preload" href="demo2.js">
</head>

javascript 的script标签相关推荐

  1. javascript --- [jsonp] script标签的妙用(绕过同源限制)

    1. 同源 1.1 什么是同源 协议.域名.端口号相同 1.2 为什么有同源政策 同源政策是为了保护用户信息的安全,放置恶意的网站窃取数据.最初的同源政策是指A网站再客户端设置的Cookie,B网站是 ...

  2. 用手动创建新的script标签的方式,实现JavaScript脚本的异步加载

    代码第四行里新建一个script标签页,在第8行的回调函数onreadystatechange里,根据属性readyState判断当前标签页的状态,如果为loaded或者complete,说明脚本加载 ...

  3. JavaScript <script>标签

    目录 1. HTML中使用JavaScript. 1.1 直接将JavaScript代码放入<script>标签中. 1.2 通过src引用外部JavaScript文件. 2. <s ...

  4. JavaScript script标签同步异步加载过程

    同步加载 同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止后续的解析,只有当当前加载完成,才能进行下一步操作. <script src="http://xxx/script.js& ...

  5. Script标签的async和defer

    之前有写过HTML页面渲染过程,知道了JavaScript是会阻塞DOM解析的,所以我们会把script标签放到底部防止阻塞HTML解析.其实script还有两个属性,async和defer,也是可以 ...

  6. script标签的defer属性

    defer 属性规定是否对脚本执行进行延迟,直到页面加载为止. 有的 javascript 脚本 document.write 方法来创建当前的文档内容,其他脚本就不一定是了. 如果您的脚本不会改变文 ...

  7. 面试小记---外部脚本必须包含 script 标签吗?

    外部脚本必须包含 <script> 标签吗? 答案是否定的. 身为小白的我一开始也是以为这句话的对了,因为本来嘛,引用外部脚本不都用的是<script>标签中的src属性吗.所 ...

  8. script标签中的async和defer

    在程序中代码是一行一行执行的,html标签都是由渲染引擎来执行,代码执行时从上往下一行一行执行,当执行到alert(如下图),alert会阻塞后面代码的执行,当点击完确定之后,代码继续往下执行. ja ...

  9. 前端 HTML 常用标签 head标签相关内容 script标签

    script标签 定义JavaScript代码 <!--定义JavaScript代码--> <script type="text/javascript">& ...

最新文章

  1. 一文看懂深度学习发展史和常见26个模型
  2. FastReport使用
  3. poj 2069 Super Star 最小求覆盖【爬山算法】
  4. TIBCO BusinessWorks 6和Container Edition与BW5的比较
  5. python各种语言间时间的转化
  6. windows安装npm教程
  7. 打log的方式检查程序里面的问题 及示例代码 详解
  8. matlab polyfit次数上限_新年重磅福利!全国21座城市酒店、民宿不限次数免费住!1000+景区免费玩!...
  9. ReflectionException: There is no setter for property named ‘createTime‘ in ‘class XXX‘
  10. HowTo 激活非常规方式安装的正版OEM Vista
  11. 智能网联汽车云控系统第3部分:路云数据交互规范
  12. Win10下安装配置使用WSL2
  13. LZW压缩算法(数据无损压缩)
  14. 小程序:浅谈小程序更新机制,发版后多久能全覆盖
  15. 复制链接到剪切板php,剪切复制粘贴
  16. 广州首发跨境电商“全球卖”-成都扬帆牧哲跨境电商
  17. 计算机中的英语六级作文万能模板,英语六级作文
  18. 蜻蜓直播社交软件之蜻蜓s前端文件目录详解-开源系统蜻蜓s系统
  19. JAVA中的集合概念
  20. 最新易支付系统源码/二开木呆+商业版的

热门文章

  1. 手机怎么批量克隆剪同款视频
  2. C#实现的两个淘宝插件源码
  3. 单片机8位抢答器实训机电报告_6位抢答器单片机实训报告要点分析.doc
  4. wxPython自定义控件:特殊的文本框TextCtrl
  5. 计算机网页设计论文范文,计算机网页设计学论文参考文献 计算机网页设计专著类参考文献哪里找...
  6. C# .net用法大全
  7. KUKA以太网 SOCKET TCP/IP以太网通信 KUKA通信 库卡实时通信 KUKA C2 KUKA C4
  8. elasticsearch 版本 6.6 插入和查询数据
  9. html转义和反转义
  10. 浅谈前端安全以及如何防范?