如何让页面加载完成后执行js


Posted in Javascript onJune 26, 2013

在很多情况下,js代码需要设置为在页面加载之后才去执行,如果在页面没有加载完毕就执行js代码,很容易出现报错情况,因为页面中的某些dom根本没有加载完毕。本文章向大家介绍如何让js脚本在页面加载完后再执行的几种方法。需要的朋友可以参考一下。

javascript 当页面dom模型加载完成后才执行javascript

不能使用<body onload="">

加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<script defer="defer">
alert("页面加载完我才执行的")
</script>
先看到这段话 然后再执行上面的 JS 如果去掉上面的 defer="defer" 那么会先执行JS 在看到这段话
</body>
</html>

方法1:使用defer

<script defer="defer" language="javascript"></script>
//或者
<script defer language="javascript"></script>

但这种方法只有IE支持,其他浏览器不识别defer 这种方法不靠谱
 
方法2:window.onload

<script type=”text/javascript”>
window.onload=function (){
  var userName=”xiaoming”;
  alert(userName);
}
</script>

但这个方法在IE中只能在一个地方调用,假如2个地方调用,后面调用的就会把前面的添加的覆盖掉; 

方法3:jQuery方法,需要引用jQuery文件。

<script type=”text/javascript”>
$(document).ready(function (){
  var userName=”xiaoming”;
  alert(userName);
});
</script>

下面我们介绍一下Window.onload=function (){}与$(document).ready(function (){})的区别:
在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){})
这两个方法的效果都是一样的,都是在dom文档树加载完之后执行一个函数(注意,这里面的文档树加载完不代表全部文件加载完)。
而window.onload是在dom文档树加载完和所有文件加载完之后执行一个函数。也就是说$(document).ready要比window.onload先执行。
那么Jquery里面$(document).ready函数的内部是怎么实现的呢?下面我们就来看看:
我们来为document添加一个ready函数:

document.ready = function (callback) {
      ///兼容FF,Google
      if (document.addEventListener) {
        document.addEventListener('DOMContentLoaded', function () {
          document.removeEventListener('DOMContentLoaded', arguments.callee, false);
          callback();
        }, false)
      }
       //兼容IE
      else if (document.attachEvent) {
        document.attachEvent('onreadystatechange', function () {
           if (document.readyState == "complete") {
                document.detachEvent("onreadystatechange", arguments.callee);
                callback();
            }
        })
      }
      else if (document.lastChild == document.body) {
        callback();
      }
    }

document.ready这个函数是实现了。我们再来验证一下最上面所说的“ready要比onload先执行”:

window.onload = function () {
      alert('onload');
    };
    document.ready(function () {
      alert('ready');
    });

执行这段代码之后,你会看到浏览器里面会先弹出“ready”,在弹出onload。
这个大家还是亲手试试吧!

Javascript 相关文章推荐
Js 本页面传值实现代码
May 17 Javascript
Javascript的闭包
Dec 31 Javascript
jQuery表格插件ParamQuery简单使用方法示例
Dec 05 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
纯JavaScript代码实现移动设备绘图解锁
Oct 16 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
浅谈JS封闭函数、闭包、内置对象
Jul 18 Javascript
微信小程序开发之tabbar图标和颜色的实现
Oct 17 Javascript
token 机制和实现方式
Dec 15 Javascript
文件编码导致jquery失效的解决方法
Jun 26 #Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
Jun 26 #Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 #Javascript
中文路径导致unitpngfix.js不正常的解决方法
Jun 26 #Javascript
解析javascript 数组以及json元素的添加删除
Jun 26 #Javascript
解析jquery获取父窗口的元素
Jun 26 #Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
Jun 26 #Javascript
You might like
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
中篇:安装及配置PHP
2006/12/13 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
python生成式的send()方法(详解)
2017/05/08 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
使用python turtle画高达
2020/01/19 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
八年级生物教学反思
2014/01/22 职场文书
与美同行演讲稿
2014/09/13 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
丧事主持词
2015/07/02 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书