用法

window.onload: 页面加载完成

一,window.onload的用法:

因为页面中的代码一般情况下按照,从上到下,从左到右的顺序执行。

所以当js代码需要获取页面中的元素时,如果script标签在元素的前面,需要加window.onload;如果script放在了元素后面,就不需要加 window.onload。

例一:点击按钮,实现div变大的效果(宽,高,增加200像素)。

<head>

<meta charset="UTF-8">

<title>Document</title>

<style type="text/css">

#box{

width: 200px;

height: 200px;

background-color: red;

}

</style>

<script type="text/javascript">

document.getElementById("btn").οnclick=function(){

document.getElementById("box").style.width="400px";

document.getElementById("box").style.height="400px";

}

</script>

</head>

<body>

<input type="button" name="btn" id="btn" value="确认">

<div id="box"></div>

</body>

注:例一在点击确认按钮时,页面上div并没有任何变化,原因是,由于程序是从上往下开始执行,运行到document.getElementById(“btn”)时,并没有发现“btn”这个元素,所以就会提示错误信息(null),此时的程序运行时也就没有任何JavaScript效果。

二,问题解决

把JavaScript中要执行的程序放在window.οnlοad=function(){}中,如例二:

例二:正确的代码

<head>

<meta charset="UTF-8">

<title>Document</title>

<style type="text/css">

#box{

width: 200px;

height: 200px;

background-color: red;

}

</style>

<script type="text/javascript">

window.οnlοad=function(){

document.getElementById("btn").οnclick=function(){

document.getElementById("box").style.width="400px";

document.getElementById("box").style.height="400px";

}

}

</script>

</head>

<body>

<input type="button" name="btn" id="btn" value="确认">

<div id="box"></div>

</body>

jQuery 入口函数和onload的区别

jQuery 入口函数:

$(document).ready(function(){

// 执行代码

});

或者

$(function(){

// 执行代码

});

JavaScript 入口函数:

window.onload = function () {

// 执行代码

}

jQuery 入口函数与 JavaScript 入口函数的区别:

  • jQuery 的入口函数是在 html 所有标签(DOM)都加载之后,就会去执行。
  • JavaScript 的 window.onload 事件是等到所有内容,包括外部图片之类的文件加载完后,才会执行。

加载多个方法

平时做项目 经常需要使用window.onload,

用法如下:

function func(){alert("this is window onload event!");return;}

window.οnlοad=func;

或者如下:

window.οnlοad=function(){alert("this is window onload event!");return;}

但window.onload 不能同时加载多个函数。

比如:

function t(){
alert("t")
}
function b(){
alert("b")
}
window.onload =t ;
window.onload =b ;

后面会把前面的覆盖,上面代码只会输出 b。

此时可用如下方法解决:

window.onload =function() { t();  b(); }

另一种解决方法如下:

function addLoadEvent(func) {
  var oldonload = window.onload;//得到上一个onload事件的函数
  if (typeof window.onload != 'function') {//判断类型是否为'function',注意typeof返回的是字符串
    window.onload = func;
  } else {  
    window.onload = function() {
      oldonload();//调用之前覆盖的onload事件的函数---->由于我对js了解不多,这里我暂时理解为通过覆盖onload事件的函数来实现加载多个函数
      func();//调用当前事件函数
    }
  }
}

//(完整示例)使用如下:

function t(){
alert("t")
}
function b(){
alert("b")
}
function c(){
alert("c")
}
 function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {  
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

addLoadEvent(t);
addLoadEvent(b);
addLoadEvent(c);
//等价于  window.onload =function() { t();  b(); c() ;}

个人以为直接使用隐式函数(如:window.onload =function() { t();  b(); c() ;})更快捷,当然使用 addLoadEvent 更professional,各取所好吧!

JS window.onload追加函数:

<script>
if(window.attachEvent)//IE:如果浏览器中存在window.attachEvent函数则使用window.attachEvent函数,判断是否是IE还可以使用:if (document.all){//..}
window.attachEvent("onload",function() {alert("add method");});
else  //FireFox
window.addEventListener("load",function() {alert("add method");},true);
</script>

运行,js中alert弹出消息,问题解决。

============相关资料================

attachEvent   将指定函数绑定到事件,以便每当该事件在对象上触发时都调用该函数。

Internet Explorer 从 5.0 开始提供了一个 attachEvent 方法,使用这个方法,就可以给一个事件指派多个处理过程了。attachEvent 对于目前的 Opera 也适用。但是 Mozilla/Firefox 并不支持这个方法。但是它支持另一个 addEventListener 方法,这个方法跟 attachEvent 差不多,也是用来给一个事件指派多个处理过程的。但是它们指派的事件有些区别,在 attachEvent 方法中,事件是以 “on” 开头的,而在 addEventListener 中,事件没有开头的 “on”,另外 addEventListener 还有第三个参数,一般这个参数指定为 false 就可以了。

onload的具体使用相关推荐

  1. $(function(){})、$(document).ready(function(){})....../ ready和onload的区别

    1.window.onload 当一个文档完全下载到浏览器中时,会触发 window.onload 事件. 这意味着页面上的全部元素对 javascript 而言都是可以访问的,这种情况对编写功能性的 ...

  2. CRM:把 isv.config.xml 按钮事件移动到 entity.onload()

    大家都知道在ISV.CONFIG里可以添加按钮,然后添加按钮事件,比如下面: <Entities>   <Entity name="account">    ...

  3. jQuery中的页面载入($()、ready(fn)、onload)

    用jQuery进行页面载入时有集中方式,我们通过例子来说明一下: 第一种(通过window.onload()): <!DOCTYPE html> <html><head& ...

  4. DOMContentLoaded 与onload区别以及使用

    一.何时触发这两个事件? 1.当 onload 事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了. 2.当 DOMContentLoaded 事件触发时,仅当DOM加载完 ...

  5. Javascrapy的window onload()函数用法

    window.onload()通常用于<body>元素,在页面完全加载后(包括图片,css文件等等)执行脚本代码. 详情:https://www.runoob.com/w3cnote/ja ...

  6. 加载多个js onload事件

    1.将要加载的内容放到onload事件中 (如果出现多个onload可能会出现函数覆盖) 2.使用 document.attachEvent('onreadystatechange',initJS1) ...

  7. JS 动态添加 onload、onresize、onscroll 事件

    window 的 onload.onresize.onscroll 事件,跟其他的事件不一样,它不能用 attachEvent 或 addEventListener 来添加. 也就是说,它只能这样来( ...

  8. 一起谈.NET技术,OnLoad与Page_Load的差异分析

    记得最开始学习ASP.NET的时候,我们就被告知:Page_Load方法里面可以写页面加载的代码. 于是我们就懵懵懂懂写了很长时间的Page_Load方法.最近回过头思考,为什么一个普通的方法,能被自 ...

  9. window.onload和jquery中$(function(){ })的区别

    为什么80%的码农都做不了架构师?>>>    今天调试js发现一个问题,我想页面加载完之后才执行我写的js方法,首先我用jqery中$(function(){ })调试了N久都没有 ...

  10. $(document).ready()和window.onload的区别

    来源于: The window.onload event fires when a document is completely downloaded to the browser. This mea ...

最新文章

  1. popStar手机游戏机机对战程序
  2. 动机模型_一个模型教你如何激发学习动机
  3. 利用MySQL触发器实现check和assertion
  4. 为什么品牌商纷纷搭建自己的商城小程序?
  5. vue动态绑定class,tab切换非常好用
  6. 谈谈java的bio、nio、aio模型
  7. python数组随机分组_Python实用黑科技——以某个字段进行分组
  8. 01-iOS之wifi通讯开发简介
  9. 递归实现10进制转8进制,字符串数字互转,判断数组正逆向
  10. mono linux c 服务,使用mono-service在Linux上包装Windows服务
  11. springboot 添加 jsp支持
  12. ASP.NET+AJAX简单的文体编辑器
  13. ArrayBuffer和TypedArray,以及Blob的使用
  14. Unity3D面试问题
  15. (Greedy approach)Find longest word in dictionary that is a subsequence of a given string
  16. 20款绝佳的HTML5应用程序示例
  17. 西门子PLC S7-200 SMART简介
  18. 对于md5加盐安全性的理解
  19. Vue 使用Echarts
  20. 【SAMF】A Scale Adaptive Kernel Correlation Filter Tracker with Feature Integration 论文阅读笔记

热门文章

  1. python编程趣味试题_Python趣味编程-中国大学mooc-试题题目及答案
  2. 删除docker container
  3. 微信小程序 获取用户昵称 头像 性别...『并解决获取的头像模糊问题』
  4. 计算机专业素质拓展日记,拓展活动三年级日记
  5. eclipse导入项目jsp文件报错
  6. Queen Collisions
  7. SpriteKit从零开始~Physics and Collisions
  8. CentOS 7 完美安装redis-5.0.5
  9. 关于Batch Normalization的理解和认识
  10. 另类网络推广-微博营销