window.onload加载js函数不起作用问题

JavaScript073

window.onload加载js函数不起作用问题,第1张

同一个页面引用多个js中可能会遇到一个问题,同一个初始化方法在同一个页面只能执行第一个

例:

1.js:

window.οnlοad=function(){undefined

console.log(1)//打印1

}

2.js:

window.οnlοad=function(){undefined

console.log(2)//没有执行

}

页面引用:

<script type="text/javascript" src="first.js"></script>

<script type="text/javascript" src="second.js"></script>

让页面加载完执行js有2种方法,js放在文档代码的下方和把语句代码放在window.onload方法里面。

js放在文档代码的下方

这是一个最简单的文档结构,引用的javascript文件都放在body的最下方和把语句放在window.onload函数里面,可以让javascript在页面加载完成后执行。

<!doctype html>

<html>

<head>

<title>helloWorld--zxk</title>

</head>

<body>

<div></div>

<script src="xxx"></script>

</body>

</html>

把语句代码放在window.onload函数里面

例如这段代码,虽然script标签没有在最下方,但javascript语句放在了window.onload里面,所以可以在文档加载完成后执行。

<!doctype html>

<html>

<head>

<title>helloWorld--zxk</title>

<script>

      window.onload=function(){

    alert('页面加载完成!')

      }

</script>

</head>

<body>

<div></div>

</body>

</html>

本篇文章主要是对js

window.onload

加载多个函数和追加函数进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

平时做项目

经常需要使用window.onload,

用法如下:

function

func(){alert("this

is

window

onload

event!")return}

window.onload=func

或者如下:

window.onload=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

就可以了。