js放到head中失效的原因与解决方法


Posted in Javascript onMarch 07, 2017

1.今天写js碰到一个奇怪的问题,写好的js放到body里面执行,但是放到head中没有任何效果,为什么导致这种原因呢?

看失效代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title> new document </title>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <style type="text/css">
 .login{width:40px;height:25px;line-height:25px;background-color:#4E74A5;margin-top:30px;text-align:center;color:#FFF;}
 </style>
 <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
 <script type="text/javascript">
 $(".login").click(function(){
   alert(1);
   });
 </script>
 </head>
 <body>
 <input type="text" class="pass" />
 <div id="enter" class="login"> 登录</div>
 </body>
</html>

2.解决办法:把js代码放到body中,或者利用 window.onload = function(){} 代码包裹,文档加载之后再执行,以后不建议放到head中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title> new document </title>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <style type="text/css">
 .login{width:40px;height:25px;line-height:25px;background-color:#4E74A5;margin-top:30px;text-align:center;color:#FFF;}
 </style>
 <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
 <script type="text/javascript">
 window.onload = function(){
 $(".login").click(function(){
   alert(1);
   });
 } 
 </script>
 </head>
 <body>
 <input type="text" class="pass" />
 <div id="enter" class="login"> 登录</div>
 </body>
</html>

3.原因:

因为文档还没加载,就读了js,js就不起作用了想在head里用的话,用window.onload = function(){//这里包裹你的代码}

js可以分为外部的和内部的,外部的js一般放到head内。内部的js也叫本页面的JS脚本,内部的js一般放到body内,这样做的目的有很多:

1.不阻塞页面的加载(事实上js会被缓存)。

2.可以直接在js里操作dom,这时候dom是准备好的,即保证js运行时dom是存在的。

3.建议的方式是放在页面底部,监听window.onload 或 readystate 来触发js。

4.延伸:

head内的js会阻塞页面的传输和页面的渲染。head 内的 JavaScript 需要执行结束才开始渲染 body,所以尽量不要将 JS 文件放在 head 内。可以选择在 document 完成时,或者特定区块后引入和执行 JavaScript。head 内的 JavaScript 需要执行结束才开始渲染 body,所以尽量不要将 JS 文件放在 head 内。可以选择在 document 完成时,或者特定区块后引入和执行 JavaScript。

所以在head内的js一般要先执行完后,才开始渲染body页面。为了避免head引入的js脚本阻塞流浪器中主解析引擎对dom的解析工作,对dom的渲染,一般原则是,样式在前面,dom文档,脚本在最后面。遵循先解析再渲染再执行script这个顺序。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript入门学习资料收集整理篇
Jul 06 Javascript
JS 动态加载脚本的4种方法
May 05 Javascript
javascript奇异的arguments分析
Oct 20 Javascript
判断用户是否在线的代码
Mar 05 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
Javascript毫秒数用法实例
Feb 05 Javascript
有关json_decode乱码及NULL的问题
Oct 13 Javascript
详解封装基础的angular4的request请求方法
Jun 05 Javascript
浅谈PDF.js使用心得
Jun 07 Javascript
vue实现微信分享功能
Nov 28 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
浅谈Vue.js组件(二)
Apr 09 Javascript
Bootstrap媒体对象学习使用
Mar 07 #Javascript
angular十大常见问题
Mar 07 #Javascript
Bootstrap表单控件学习使用
Mar 07 #Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 #Javascript
Bootstrap进度条实现代码解析
Mar 07 #Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 #Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 #Javascript
You might like
真正的ZIP文件操作类(php)
2007/07/21 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
js实现从数组里随机获取元素
2015/01/12 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
理解python正则表达式
2016/01/15 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
pycharm安装图文教程
2017/05/02 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
python3 pygame实现接小球游戏
2019/05/14 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
波兰补充商店:Muscle Power
2018/10/29 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
日语求职信范文
2013/12/17 职场文书
经营理念标语
2014/06/21 职场文书
精神病医院见习报告
2014/11/03 职场文书