2015-10-15 2 views
2

Я пробовал простой пример (FIDDLE). Как и в этом примере, у меня есть некоторый код, который нужно выполнить, когда вкладка/окно сфокусирована (но один раз).Событие фокусировки jQuery переходит в бесконечную рекурсию

jQuery(window).focus(function(){ 
    alert(); 
}); 

Почему основное внимание уделяется бесконечной рекурсии. Когда я попытался в firefox, он продолжал показывать предупреждения, пока firefox не дал мне ошибку и не вырвался из рекурсии.

ответ

2

Что ваш код говорит каждый раз, когда страница сфокусирована, показывает предупреждение, которое само по себе заставит страницу снова сфокусироваться.

Чтобы уточнить функцию фокуса, на самом деле создается обработчик событий во всем окне, которое будет вызываться при сфокусированном окне, но не указывает браузеру сфокусироваться на окне.

Так фокус -> бдительны -> фокус -> бдительны -> фокус ........ в бесконечность === "слишком много рекурсии"

+1

[gabriel] (http://stackoverflow.com/users/2330575/gabriel) Спасибо за ответ. Может принять ответ за 7 минут. – Abhi

+1

проблем нет, спасибо –

0

попробовать что-то вроде этого:

var customFunction = function (event) { 

    window.removeEventListener('focus',customFunction, false); 
    alert("hi"); 
}; 
window.addEventListener("focus", customFunction, false); 
Смежные вопросы