龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

js执行多个window.onload产生too much recursion错误解决办法

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
Web程序中利用JavaScript执行多个window.onload事件是非常普通的,但如果使用中要保证每个window.onload事件执行,今天我在测试时突然出现了js执行多个window.onload产生too much recursion错误下面我们
Web程序中利用JavaScript执行多个window.onload事件是非常普通的,但如果使用中要保证每个window.onload事件执行,今天我在测试时突然出现了js执行多个window.onload产生too much recursion错误下面我们就来看看解决办法吧。

,通用的解决方案如下:

 代码如下

<script type="text/javascript">
var func = window.onload;
window.onload = function(){
    func ? func() : 0;
    alert(1);
}
</script>

这样的原理就是把window.onload事件一级一级传递,保证每一个window.onload事件能执行,但如果出现多次调用而且变量名一样,就会产生too much recursion错误,如下

 代码如下

<script type="text/javascript">
var func = window.onload;
window.onload = function(){
    func ? func() : 0;
    alert(1);
}
 
func = window.onload;
window.onload = function(){
    func ? func() : 0;
    alert(2);
}
</script>

上面实现执行两个window.onload事件,但由于每次传递window.onload事件定义为相同的变量名,就会产生too much recursion错误。

解决方法
由于产生的原因是因为定义为相同的变量名产生循环执行代码,因此解决方法只需要把变量名定义不同即可解决。如下

 代码如下

<script type="text/javascript">
var func = window.onload;
window.onload = function(){
    func ? func() : 0;
    alert(1);
}
 
func1 = window.onload;
window.onload = function(){
    func1 ? func1() : 0;
    alert(2);
}
</script>


Web页面如果出现多次window.onload事件,尽量能合并操作处理,或实现类似于jQuery的ready事件机制,解决冗余代码问题,提高代码的可读性。

 


精彩图集

赞助商链接