我有一个非常简单的事情,我在使用
javascript,基本上只有有时会给我一个“太多的递归”错误.
相关代码:
if(pageLoad===undefined){ var pageLoad=function(){}; } var pageLoad_uniqueid_11=pageLoad; var pageLoad=function(){ pageLoad_uniqueid_11(); pageLoad_uniqueid_12(); }; var pageLoad_uniqueid_12=function(){ alert('pageLoad'); }; $(document).ready(function(){ pageLoad(); });
(是的,我知道有更好的方式做这个,这很难改变,特别是因为ASP.Net部分回发,没有显示).
无论如何,当太多的递归错误发生时,它会继续发生,直到我重新启动Firefox.当我重新启动Firefox,它一切正常工作.我该如何解决?
我也做了一个jsbin example
更新
好的,我已经发现如何在我们的代码中可靠地重现它,但它不适用于jsbin示例.如果我创建一个新的选项卡并转到同一个页面(有两个相同地址的选项卡),然后刷新第一个选项卡两次,那么我一直得到这个错误.我们没有使用任何类型的会话或任何其他我可以想到的可能会导致这样的问题只发生在一个选项卡!
更新2
不如我想象的那样可靠,但它绝对只有当同一页面的多个选项卡打开时才会发生.每打开一个标签的每一个重新加载就会发生
当pageLoad(if语句)最初未定义并且最初定义时,我还更新了我的代码以显示警报.不知怎的,两个警报都显示出来.这个代码在渲染的页面中不重复,没有办法被调用两次.它是一个顶级的脚本元素,不被函数或任何东西包围!我的代码最终看起来像
if(pageLoad===undefined){ var pageLoad=function(){}; alert('new'); } else { alert('old'); }