经常需要在代码中为特定对象的事件指定JS处理函数,例如
我们为window的LOAD事件指定事件处理函数,标准的方法是
window.οnlοad=onLoadHandler;
但这样有一个问题,假如前面指定了一个Handler,后面又指定了一个handler,就会只有一个Handler被执行,不能像C#中用事件委托那样串接事件处理函数
但是,也不是没有办法,办法是让JS使用字符串串接一个包含所有事件处理句柄的函数,然后,再将其指定给特定事件,多的不说,看下面的例子
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a7a65f1fb54a9db2ca99c25fd1f36c94.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0e46550b17972f115102876f474677da.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9277226a4d9dca2fb93edb616cf21b87.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6cbca10ca6e659598525942ff605543a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a7a65f1fb54a9db2ca99c25fd1f36c94.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0e46550b17972f115102876f474677da.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9277226a4d9dca2fb93edb616cf21b87.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6cbca10ca6e659598525942ff605543a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/3576ef4b9f84948a0b4fbd1f55f59b1e.gif)
你可以试一下
看a和b两个函数是不是都被执行了呢?
原因就是JS的eval函数,它可以动态分析并执行JS代码
其结果就是我在其中定义了一个函数hello,hello中依次执行a和b
当eval执行后,hello函数就存在了,并且,可以被正常的调用了
if ( window.onload )
{
window.__onload == window.onload;
}
window.onload = newFunction;
function newFunction()
{
if ( window.__onload )
{
window.__onload();
}
// new sentences
}