js性能---为什么将你的script标签置于</body>标签之前

本文详细解析了网页加载过程中浏览器如何从服务器获取文档,并解释了JavaScript脚本如何阻塞其他资源(如CSS、图片)的并行下载。重点强调了脚本在头部的位置对其下载顺序的影响。
The reason is because of how web pages load. When a browser hits a web page, it first sends a request to the server for the document at the URL. Then once that document arrives at the browser, the browser parses it and starts making additional requests to the server for external components like style sheets, images, and scripts. The browser downloads these components in parallel—up to two components at one time (according to the HTTP 1.1 specification).
But scripts block parallel downloads. This means that once a browser starts downloading a script, it won’t download anything else until the script has finished downloading. (js)资源下载会阻塞其他资源(如css,img)的并行下载
Since browsers read HTML documents from the top to the bottom, starting with the doctype and <html> opening tag, any scripts that are in the HEAD are going to be some of the first components downloaded. And until they are finished downloading the scripts, nothing else on the page will be downloaded.
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>单页应用示例</title> <link rel="stylesheet" href="../CSS/index.css"> </head> <body> <div class="content"> <!-- 导航栏 --> <nav class="navbar"> <ul> <li> <div class="search-container"> <input class="search-input" type="text" name="" placeholder="搜索..."> <button class="search-button" value="搜索"> <img src="../Image/搜索.png" alt="搜索"> </button> </div> </li> <li><a href="#" class="nav-link active" data-target="home">首页</a></li> <li><a href="#" class="nav-link" data-target="">山河</a></li> <li><a href="#" class="nav-link" data-target="">景致</a></li> <li><a href="#" class="nav-link" data-target="">独韵</a></li> <li><a href="#" class="nav-link" data-target="">文脉</a></li> <li><a href="#" class="nav-link" data-target="">远图</a></li> <li><a href="#" class="nav-link" data-target="">业兴</a></li> <li><a href="#" class="nav-link" data-target="">民安</a></li> <li><a href="#" class="nav-link" id="right" data-target="register">注册</a></li> </ul> </nav> <!-- 轮播图 --> <video src="" id="myVideo"> <source src="../Video/云海.mp4" type="video/mp4"> </video> <div class="content"> <div id="silder"> <ul id="list"> <li><img src="../Image/丹江.png"></li> <li><img src="../Image/丹江.png"></li> <li><img src="../Image/白河.png"></li> <li><img src="../Image/桐柏山脉.png"></li> <li><img src="../Image/唐河.png"></li> <li><img src="../Image/丹江.png"></li><!-- 把第一张图片放在最后 --> </ul> </div> </div> </div> <!-- 内容区域 --> <div class="content-container"> <!-- 首页内容 --> <section id="home" class="content-section active"> <h1>欢迎来到首页</h1> <p>这是首页内容,请点击上方导航切换页面</p> <div class="features"> <div class="feature-card">特色功能 1</div> <div class="feature-card">特色功能 2</div> <div class="feature-card">特色功能 3</div> </div> </section> <!-- 注册页内容 --> <section id="register" class="content-section"> <h2>用户注册</h2> <form id="registration-form"> <div class="form-group"> <label for="username">用户名:</label> <input type="text" id="username" required> </div> <div class="form-group"> <label for="email">邮箱:</label> <input type="email" id="email" required> </div> <div class="form-group"> <label for="password">密码:</label> <input type="password" id="password" required> </div> <button type="submit">注册</button> </form> </section> </div> <script src="../JS/index.js"></script> </body> </html> js和css已经按照上文设置为什么没有出现背景视频
最新发布
12-02
分析代码; <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>京东TMS系统</title> <meta content="width=device-width, initial-scale=1.0" name="viewport" /> <link type="image/x-icon" href="/static/images/favicon.ico" rel="shortcut icon"> <!-- basic styles begin --> <link href="/static/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css"/> <!-- basic styles end--> <!-- basic script begin --> <script src="/static/js/plugins/jquery-3.3.0.js" type="text/javascript"></script> <script src="/static/assets/js/bootstrap.min.js" type="text/javascript"></script> <script src="/static/assets/js/bootstrap-table.js" type="text/javascript"></script> <link href="/static/assets/css/bootstrap-table.css" rel="stylesheet" type="text/css"/> <!-- basic script end --> </head> <body lang="zh-CN"> <link href="/static/assets/css/font-awesome.min.css" rel="stylesheet" type="text/css"/> <!--[if IE 7]> <link href="/static/assets/css/font-awesome-ie7.min.css" rel="stylesheet"/> <![endif]--> <link href="/static/assets/css/ace.min.css" rel="stylesheet" type="text/css"/> <!--[if lte IE 8]> <link href="/static/assets/css/ace-ie.min.css" rel="stylesheet"/> <![endif]--> <link href="/static/assets/css/ace-rtl.min.css" rel="stylesheet" type="text/css"/> <link href="/static/assets/css/ace-skins.min.css" rel="stylesheet" type="text/css"/> <link href="/static/assets/css/bootstrap-datetimepicker.min.css" rel="stylesheet" media="screen"> <link href="/static/js/plugins/sweetalert/sweet-alert.css" rel="stylesheet" media="screen"> <link href="/static/js/plugins/dateRange/daterangepicker.css" rel="stylesheet" type="text/css" /> <link href="/static/css/boss.css" rel="stylesheet" type="text/css"/> <link href="/static/css/bootstrap-table-fixed-columns.min.css" type="text/css" rel="stylesheet" /> <style type="text/css"> .page-content {padding-left:24px;padding-right:24px;} .fixed-table-border { height: 0px !important; } .no-records-found{ display: none; } </style> <input type="hidden" id="contextPath" value=""/> <input type="hidden" id="userDefaultSiteCode" value=""/> <link href="/static/css/bootstrap-select.css" type="text/css" rel="stylesheet" /> <style> @media (max-width: 10000px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-x: scroll; overflow-y: hidden; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; border: 1px solid #ddd; } .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > td { white-space: nowrap; } tr{ white-space: nowrap; } th{ white-space: nowrap; } } #queryForm label{font-size:11px;} </style> <div class="main-content"> <div id="breadcrumbs" class="breadcrumbs"> <ul class="breadcrumb"> <li> <i class="icon-home home-icon"></i> <a href="#">首页</a> </li> <li> <a href="#">运输管理</a> </li> <li class="active">揽收运输单管理</li> </ul> </div> <div class="page-content"> <div class="search-area well" style="padding-left: 20px"> <form id="queryForm" class="form-horizontal" method="post"> <input type="hidden" name="excludeFlag" id="excludeFlag" /> <input type="hidden" name="strict" id="strict" /> <div class="row"> <div class="control-group search-group"> <label class="control-label search-lable100" for="scheduleCenterName">调度中心:</label> <input type="text" id="scheduleCenterName" class="search-input200" /> <input type="hidden" id="scheduleCenterCode" name="scheduleCenterCode" value="020D324" /> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="transbillCode">运单号:</label> <input type="text" id="transbillCode" name="transbillCode" class="search-input200" /> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="shipperCode">发货商家:</label> <select class="selectpicker search-input150" name="shipperCode" id="shipperCode" multiple data-actions-box="true" data-live-search="true" title="请选择发货商家" data-live-search-placeholder="请输入发货商家" data-none-results-text="暂无发货商家 {0}" data-select-all-text="全选" data-deselect-all-text="全不选"></select> <label for="excludeCheck" class="exclude-check-label">排除:</label> <input type="checkbox" class="exclude-check-box" id="excludeCheck" /> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="shipperCode">温层:</label> <select id="temperatureLayer" name="temperatureLayer" class="search-input200"> </select> </div> </div> <div class="row"> <div class="control-group search-group"> <label class="control-label search-lable100" for="beginProvinceId">揽收省份:</label> <select id="beginProvinceId" name="beginProvinceId" class="search-input200"> </select> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="beginCityId">揽收城市:</label> <select id="beginCityId" name="beginCityId" class="search-input200"> </select> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="beginCountyId">揽收县区:</label> <select id="beginCountyId" name="beginCountyId" class="search-input200"> </select> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="beginTownId">揽收乡区:</label> <select id="beginTownId" name="beginTownId" class="search-input200"> </select> </div> </div> <div class="row"> <div class="control-group search-group"> <label class="control-label search-lable100" for="industryType">行业类型:</label> <select id="industryType" name="industryType" class="search-input200"> </select> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="receiveJobCode">揽收任务单号:</label> <input type="text" id="receiveJobCode" name="receiveJobCode" class="search-input200" /> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="scheduleStatus">调度状态:</label> <select id="scheduleStatus" name="scheduleStatus" class="search-input200"> <option value="" selected="selected"></option> <option value="10">初始</option> <option value="20">待调度</option> <option value="30">已调度</option> <option value="100">已完成</option> <option value="200">取消</option> </select> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="selfFlag">揽收方式:</label> <select id="selfFlag" name="selfFlag" class="search-input200"> <option value="">全部</option> <option value="1">上门揽收</option> <option value="2">自送揽收</option> </select> </div> </div> <div class="row"> <div class="control-group search-group"> <label class="control-label search-lable100" for="operateTerminal">操作终端:</label> <select id="operateTerminal" name="operateTerminal" class="search-input200"> <option value="">全部</option> <option value="1">一体机</option> <option value="2">APP</option> </select> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="tcFlag">业务类型:</label> <select id="tcFlag" name="tcFlag" class="search-input200"> <option value=""></option> <option value="1">TC上门揽收</option> <option value="0">B网揽收</option> </select> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="receiveBeginTime">预约揽收开始时间:</label> <span class="input-icon input-icon-right"> <input id="receiveBeginTime" type="text" readonly="readonly" class="search-input200" style="background-color:#ffffff !important;" /> <input type="hidden" id="receiveBeginTimeBegin" name="receiveBeginTimeBegin" /> <input type="hidden" id="receiveBeginTimeEnd" name="receiveBeginTimeEnd" /> <i class="icon-calendar add-on"></i> </span> </div> <button class="btn btn-sm btn-purple" type="button" id="clearTime"> <i class="icon-undo icon-on-right bigger-110"></i>清空时间 </button> </div> <div class="row"> <div class="control-group search-group"> <label class="control-label search-lable100" for="createTime">创建时间:</label> <span class="input-icon input-icon-right"> <input id="createTime" type="text" readonly="readonly" class="search-input200" style="background-color: rgb(255, 255, 255) !important;"> <input type="hidden" id="createBeginTime" name="createBeginTime"> <input type="hidden" id="createEndTime" name="createEndTime"> <i class="icon-calendar add-on"></i> </span> </div> <div class="control-group search-group"> <label class="control-label search-lable100" for="transbillCode">发货地址:</label> <input type="text" id="beginAddress" name="beginAddress" class="search-input200" value=""> </div> </div> <div class="row"> <div class="col-xs-12"> <div class="control-group search-group" style="width: 100%; text-align: center;"> <button class="btn btn-sm btn-primary" type="button" id="queryBtn"> <i class="icon-search icon-on-right bigger-110"></i>查询 </button> <button class="btn btn-sm btn-info" type="button" id="batchReassignBtn"> <i class="icon-wrench icon-on-right bigger-110"></i>批量修改调度中心 </button> <button class="btn btn-sm btn-pink" type="button" id="exportBtn"> <i class="icon-share-alt icon-on-right bigger-110"></i>导出 </button> <input type="hidden" id="currentPage" name="currentPage" value="1"/> </div> </div> </div> </form> </div> <div class="row"> <div class="col-xs-12"> <div class="table-responsive" style="overflow: hidden"> <table class="table table-striped table-bordered table-hover" id="sample-table-1" data-toggle="table" data-height="500"> <thead> <tr> <th class="center" width="50"> <label> <input type="checkbox" id="checkboxAll" name="checkboxAll" title="全选/反选" /> <span class="lbl"></span> </label> </th> <th>操作</th> <th>揽收任务号|询价单号</th> <th>运单号</th> <th>发货商家</th> <th>订单来源</th> <th>业务类型</th> <th>承运商类型</th> <th>承运商车队</th> <th>承运商</th> <th>调度状态</th> <th>调度中心</th> <th>温层</th> <th>是否包装</th> <th>行业类型</th> <th>预计体积</th> <th>预计重量</th> <th>预计件数</th> <th>揽收省份</th> <th>揽收城市</th> <th>揽收县区</th> <th>揽收乡镇</th> <th>目的快运中心</th> <th>揽收方式</th> <th>预约揽收开始时间</th> <th>预约揽收结束时间</th> <th>取消揽收原因</th> <th>操作终端</th> <th>实测温度</th> </tr> </thead> <tbody id="dataTbody"> </tbody> </table> </div><!-- /.table-responsive --> <div id="pageBarDiv" class="row"></div> </div><!-- /span --> </div> </div><!-- /.page-content --> </div><!-- /.main-content --> <!-- Modal --> <div class="modal fade" id="inputDialog" tabindex="-1" role="dialog" aria-labelledby="inputDialogLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true">×</span><span class="sr-only">Close</span> </button> <h4 class="modal-title" id="inputDialogLabel">修改调度中心</h4> </div> <div class="modal-body"> <table class="table table-striped table-bordered table-hover"> <tbody> <tr id="transbillCodeTR"> <td class="td-label">运单号:</td> <td> <input type="text" id="input_transbillCode" class="col-md-5" value="" disabled="disabled"><!-- 只能输入字母数字--> <span class="red">*</span> </td> </tr> <tr> <td class="td-label">所属调度中心:</td> <td> <input type="text" id="input_scheduleCenterName" name="input_scheduleCenterName" class="search-input300" value=""> <input type="hidden" id="input_scheduleCenterCode" name="input_scheduleCenterCode" value=""/> </td> </tr> </tbody> </table> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button type="button" class="btn btn-primary" id="inputSubmitBtn" data-loading-text="正在处理..." >保存</button> </div> </div> </div> </div> <!-- page specific plugin scripts --> <script src="/static/assets/js/jquery.dataTables.min.js" type="text/javascript"></script> <script src="/static/assets/js/jquery.dataTables.bootstrap.js" type="text/javascript"></script> <script src="/static/js/plugins/json2.js" type="text/javascript"></script> <script src="/static/js/common/pcct.selector.js" type="text/javascript"></script> <script src="/static/js/common/basic-data-client.js" type="text/javascript"></script> <script src="/static/js/plugins/bootstrap-select.js" type="text/javascript"></script> <script src="/static/assets/js/bootstrap-table-fixed-columns.min.js" type="text/javascript"></script> <script src="/static/js/boss/receive-transbill/index.js?v=20240819" type="text/javascript"></script> <script src="/static/assets/js/ace-extra.min.js" type="text/javascript"></script> <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="/static/assets/js/html5shiv.js" type="text/javascript"></script> <script src="/static/assets/js/respond.min.js" type="text/javascript"></script> <![endif]--> <!-- ace scripts --> <script src="/static/assets/js/jquery-ui.1.12.1.js" type="text/javascript"></script> <script src="/static/assets/js/typeahead-bs2.min.js" type="text/javascript"></script> <script src="/static/assets/js/ace-elements.min.js" type="text/javascript"></script> <script src="/static/assets/js/ace.min.js" type="text/javascript"></script> <script src="/static/assets/js/bootstrap-datetimepicker.min.js" type="text/javascript"></script> <script src="/static/assets/js/bootbox.min.js" type="text/javascript"></script> <script src="/static/js/plugins/jquery.blockUI.js" type="text/javascript"></script> <script src="/static/js/plugins/sweetalert/sweet-alert.js" type="text/javascript"></script> <script src="/static/js/common/common-client.js" type="text/javascript"></script> <script src="/static/js/common/common-ui.js?v=20160909" type="text/javascript"></script> <script src="/static/js/common/utils.js?t=20150128" type="text/javascript"></script> <script src="/static/js/plugins/dateRange/moment.min.js" type="text/javascript"></script> <script src="/static/js/plugins/dateRange/daterangepicker.js" type="text/javascript"></script><script type="text/javascript"> /************将以下脚本部署至每一个页面底部</body> 之前且紧挨</body> 。每个页面只可引用一次,不可重复引用。*************/ var jaq = jaq || []; jaq.push(['account', 'JA2018_1121107']); jaq.push(['domain', 'jd.com']); //jaq.push(['erp_account', 'test']); //ERP帐号,erp_account为字段名固定不变,test填入用户erp帐号(调用方自己传,若不传,会记录用户的京东pin) (function () { var ja = document.createElement('script'); ja.type = 'text/javascript'; ja.async = true; ja.src = '//wl.jd.com/joya.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ja, s); })() </script> </body> </html>
09-05
<html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>www.qiandu.com</title> </head> <body> <h1>wasai</h1> <p id='123'>不错</p> <img src="1.jpg"> <audio src="1.mp3">asd</audio> <video src="2.mp4">视频</video> <table border="1"> <caption>aaa</caption> <tr> <th>序号</th> <th>姓名</th> <th>性别</th> <th>年龄</th> </tr> <tr> <td>1</td> <td>张三</td> <td>男</td> <td>18</td> </tr> <tr> <td>2</td> <td>王五</td> <td>男</td> <td>22</td> </tr> </table> <br> <a href="login.html">登陆</a> <form action="login.php" method="get" onclick="alert('')"> <script> function test() { var a=document.getElementById('username').value; var a=document.getElementById('password').value; alert("用户名:" + username + "\n密码:" + password); return false; // 阻止表单提交 } </script> 用户:<input type="text"id="username" name="username"><br> 密码:<input type="password" id="password" name="password"><br> 男:<input type="radio" name="sex" value="nan"> 女:<input type="radio" name="sex" value="nv"><br> 打游戏:<input type="checkbox" name="xq[]"> 听音乐:<input type="checkbox" name="xq[]"> 看小说:<input type="checkbox" name="xq[]"><br> <select id="2" name="city" > <option>成都</option> <option>广安</option> <option>北京</option> </select> <input type="file" name="file"> <textarea id="1" name="" rows="5" cols="4"></textarea> <input type="button" value="提交" name= "" > <button>注册</button> </form> <script src="test.js"></script> </body> </html>
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值