最近遇到一个问题:
HTML里的哪一部分Javascript 会在页面加载的时候被执行()
A : 文件头部

B : 文件尾

C : <head>标签部分

D : <body>标签部分

虽然大家都知道选D,但是关于答案的解析众说纷纭,由此可见大家对于浏览器的加载解析渲染还是不够了解。

浏览器是从上到下依次加载并解析的。

当浏览器加载html文件并解析到<head>时,页面也就是<body>并没有被解析,浏览器会等到<head>中的js执行完再加载页面。

这是为什么呢?

原因:JS有可能会修改DOM,最为经典的document.write,这意味着,在JS执行完成前,后续所有资源的下载可能是没有必要的,这是js阻塞后续资源下载的根本原因。

示例代码:

<!DOCTYPE html>
<html>
<head><title></title><script type="text/javascript">console.log('this is head js ');</script><script type="text/javascript" src='test.js'></script><style type="text/css">body{color: red;}</style>
</head>
<body>
<script type="text/javascript">console.log('this is body js');window.οnlοad=function(){console.log('this is onload js');};
</script>
<p >this is body</p>
</body>
</html>

输出:

this is head js 
this is test js
this is body js
this is onload js

由此可见head和头部引进的script脚本最先加载并执行,而onload是最后执行的,所以处于<body>和</body>中的元素是在页面加载的时候被执行的。

了解这个有什么用呢?

假如说你把DOM操作放在了<head>标签里,你会发现报错,这是因为DOM树还没建立,getElementById获取的是undefined。

所以说最好把<script>放在</body>之前。

转载于:https://www.cnblogs.com/aliyunpang/p/9088202.html

HTML里的哪一部分Javascript 会在页面加载的时候被执行?相关推荐

  1. html js页面加载前执行,Javascript代码在页面加载时的执行顺序介绍

    一.在HTML中嵌入Javasript的方法 1.直接在Javascript代码放在标记对之间 2.由标记的src属性制定外部的js文件 3.放在事件处理程序中,比如: 点击我 4.作为URL的主体, ...

  2. java 提交界面_使用javascript如何实现页面加载时自动提交表单

    if Request.QueryString("action")="loadsubmit" then Response.Write("自动提交&quo ...

  3. Javascript在页面加载时的执行顺序

    一.在HTML中嵌入Javasript的方法 直接在Javascript代码放在标记对<script>和</script>之间 由<script />标记的src属 ...

  4. Javascript在页面加载时的执行顺序(转载)

    原文:http://dancewithnet.com/2007/03/22/order-of-execution-of-javascript-on-web/ 一.在HTML中嵌入Javasript的方 ...

  5. JavaScript中的懒加载——概念,作用,原理,实现步骤,以及3种原生js实现方式

    1.什么是懒加载? 懒加载也就是延迟加载. 当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次,俗称占位图), 只有当图片出现在浏览 ...

  6. javascript模块化、模块加载器初探

    最常见网站的javascript架构可能是这样的: 一个底层框架文件,如jQuery 一个网站业务框架文件,包含整站公用业务模块类(如弹框.ajax封装等) 多个业务文件,包含每个具体页面有关系的业务 ...

  7. 页面加载后如何使JavaScript执行?

    我正在使用<head>内的<script>执行外部脚本. 现在,由于脚本是在页面加载之前执行的,因此我无法访问<body> . 在文档"加载"后 ...

  8. JavaScript 判断 DOM 何时加载完毕

    处理HTML DOM文档存在一个难题是,JavaScript可以在DOM完全加载之前执行,这会给你的代码引发不少的潜在问题.浏览器的渲染和操作顺序大致如下列表: HTML解析完毕 外部脚本和样式表加载 ...

  9. 《高性能JavaScript》第一章 加载和执行

    1.1 脚本位置 描述 将所有 原因 UI渲染和JavaScript运行共用一个线程, 反例 ----------------------------------------------------- ...

最新文章

  1. linux下配置多网卡或多IP的方法
  2. python程序练习题第三章_python核心编程-第三章-习题
  3. c++十六进制转十进制_一文帮你详细图解二进制、八进制、十进制、十六进制之间的转换...
  4. Vx2Text-多模态任务新进展!哥大Facebook提出VX2TEXT模型,实现了“视频+X”到“文本”的任务...
  5. 通过微服务进行分布式应用开发
  6. 细说浏览器特性检测(1)-jQuery1.4添加部分
  7. 计算机鼠标游戏教学法,中职计算机应用基础课游戏教学法实施.doc
  8. 计算机桌面有阴影,电脑桌面图标有阴影怎么去掉
  9. 2022最新ES面试题整理(Elasticsearch面试指南系列)
  10. java 日期格式化 英文_Java中使用SimpleDateFormat输出英文日期(原创)
  11. 流体力学发展史(转)
  12. 计算机老师新年贺卡祝福语,新年贺卡祝福语老师大全
  13. 2014 android 新技术,向友商学习 Android 12新功能前瞻:似曾相识
  14. jenkins + Gitlab + dingding 钉钉通知
  15. html5 桌面时钟,超级实用的html5制作15种数字时钟样式代码
  16. 平台 DllRegisterServer调用失败
  17. 驼峰设计 宣传PPT代写
  18. STC8G1K08A 串口无法烧录程序
  19. 360安全卫士2014最新版 v9.7.0.1002x 官方免费版
  20. 读《基于深度学习的以图搜图技术在照片档案管理中的应用研究_赵学敏》

热门文章

  1. Angular中使用HttpClientModule模块实现get请求数据和post提交数据
  2. DevExpress的TreeList实现自定义右键菜单打开文件选择对话框
  3. C#中使用SharpZipLib进行解压缩然后进行二进制反序列化
  4. MyBatisPlus3.x中使用条件构造器查询某一天的记录数时的日期格式化注意
  5. SpringBoot中使用POI导出Excel时怎样循环数据库数据赋值
  6. 神策数据赋能物流服务行业数字化转型
  7. 神策营销云:微信生态中,「电商」如何借“运营工具”,抢占 4.5 亿流量红利?...
  8. 神策数据张涛:AARRR 模型面临的新挑战
  9. 基于Git rebase修改历史提交信息
  10. Nginx反代Mogilefs分布式储存示例