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事件机制,解决冗余代码问题,提高代码的可读性。

 

时间: 2024-09-21 19:54:55

js执行多个window.onload产生too much recursion错误解决办法的相关文章

js中form.submit()提交object is not a function错误解决办法

form.submit()提交时报错object is not a function 在写表单提交时遇到一个很扯淡的问题,分享一下. 比如有个表单,其中某元素的id为submit,像下面这样写: <input id="submit" type="xxx" /> 即,如果在表单某元素中,设置了一个id名为submit的元素, 然后在使用form.submit()进行提交表单时, 表单无动作,浏览器控制台中会提示一个js错误: Uncaught TypeEr

MS SQL执行大脚本文件时,提示“内存不足”的解决办法

问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,往往会遇到"内存不足"的提示. 解决办法: 用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:cd C:\Program Files\Microsoft SQL Serv

js中Window.Event.KeyCode在Firefox不响应解决办法

解决办法 <body onkeydown="enterkey(event)">   <!-- 点击键盘即触发 enterkey函数 -->   代码如下 复制代码 function enterkey(et){    if(et.keyCode){        if (et.keyCode==13)           alert("IE Chrome 点击回车键");        }else{           if (et.which

Node.js connect ECONNREFUSED错误解决办法_node.js

最近在准备Angularjs +node.js demo的时候在我的mac开发中 遇见此错误,如下: events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: connect ECONNREFUSED at errnoException (net.js:770:11) at Object.afterConnect [as oncomplete] (net.js:761:19) 最后在stackoverflow找到解决

django访问静态资源css, js, 图片报编码错误解决办法

错误截图如下 可以发现所有的静态资源文件,包括css, js, 图片文件都找不到,后台错误报编码错误. 试过很多办法,包括在settings.py 中设置 DEFATULT_CHARSET='UTF-8' 等,也还试过有人说过的,在manage.py 中加入下面的语句: 程序代码 程序代码  代码如下 复制代码 reload = reload(sys) sys.setdefaultencoding("cp1251") #其实这里还会报错,貌似python2.7 不支持 setdefau

Node.js Error: Cannot find module ‘node-static’错误解决办法

Cannot find module 问题 在测试WebRTC codelab的时候,运行codelab.complete.step1出错,抛出Error: module.js:340     throw err;           ^ Error: Cannot find module 'node-static'     at Function.Module._resolveFilename (module.js:338:15)     at Function.Module._load (m

引用其它js时如何同时处理多个window.onload事件_javascript技巧

有时引用其它js时,其js却使用了window.onload事件,这样的话,引入的页面的onload事件就有可能执行不了,怎样才能两个都运行呢?除了将两个写到一块儿去的方法外,还有其他的方法 if(window.onload!=null){ eval("theOldFun="+window.onload.toString()); window.onload=function(){theOldFun();addReadResource();}; } eval()函数的作用: 它的功能是把

jQuery中的ready函数与window.onload谁先执行_jquery

A.关于$(document).ready(): jquery中的$(document).ready(),那$(document).ready()到底是什么作用呢?是不是可以用window.onload = function(){ ... }来实现呢? 这里,我们要明确二者之间的区别. 我们使用window.onload = function(){ ... },是希望在页面被载入时执行function中的处理,但是这些JS代码只有在页面上的全部内容加载完成(包括头部的banner广告,所有图片)

js中的window.onload和jquery中的load区别的讲解

JavaScript 中的以下代码  [javascript] view plaincopyprint? Window.onload = function (){      // 编写代码 }   Window.onload = function (){ // 编写代码 }  等价于   Jquery 代码如下:  [javascript] view plaincopyprint? $(window).load(function (){        // 编写代码  });   $(windo