У меня есть довольно простая вещь, которую я делаю с javascript, и в основном только иногда 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, которая не 't показано).
В любом случае, когда возникает слишком большая ошибка рекурсии, она будет продолжаться до тех пор, пока я не перезапущу Firefox.когда я перезапускаю Firefox, все снова работает как обычно.Как это исправить?
Я также сделал jsbin пример
Обновление
Хорошо, я нашел, как надежно воспроизвести егов нашем коде, но это не работает для примера jsbin.Если я создаю новую вкладку и перехожу на одну и ту же страницу (у меня две вкладки с одинаковым адресом), а затем обновляю первую вкладку два раза, я получаю эту ошибку последовательно.Мы не используем какой-либо сеанс или что-либо еще, о чем я могу подумать, что это может привести к возникновению такой проблемы только в одной вкладке!
Обновление 2 Не так надежно, как я думал,но это определенно происходит только тогда, когда открыто более одной вкладки на одной странице.Это будет происходить каждые несколько перезагрузок одной из открытых вкладок
Я также обновил свой код, чтобы показывать предупреждение, когда pageLoad (оператор if) изначально не определен и когда он изначально определен.Почему-то оба оповещения появляются.Этот код не дублируется на отображаемой странице, и его нельзя вызвать дважды.Он находится в элементе скрипта верхнего уровня, не окруженном функцией или чем-либо еще!Мой код выглядит как
if(pageLoad===undefined){
var pageLoad=function(){};
alert('new');
} else {
alert('old');
}