Peut-on empêcher Chrome de provoquer une boucle infinie lors de l'affichage d'alertes sur l'événement de mise au point, sans désactiver et réactiver l'événement?

Considérez le code suivant. Si je clique sur cmbMonkeys, cela provoque une boucle infinie de messages d'alerte dans Google Chrome. Ma solution pour cmbPeople fonctionne bien. Est-ce que quelqu'un sait d'une autre façon d'empêcher les boucles infinies lors de l'affichage d'alertes sur les événements de mise au point ou de flou, sans désactiver et réactiver l'événement?

<html> <head> <script> var eventHandler; function cmbPeople_OnFocusHandler() { alert("focus"); } function cmbPeople_CallFocusHandler(control) { eventHandler = control.onfocus; control.onfocus = null; cmbPeople_OnFocusHandler(); } function cmbPeople_CallBlurHandler(control) { control.onfocus = eventHandler; } function cmbMonkeys_FocusHandler(control) { alert("I like monkeys"); } </script> </head> <body> monkeys <select id="cmbMonkeys" onfocus="cmbMonkeys_FocusHandler(this)"></select> people <select id="cmbPeople" onfocus="cmbPeople_CallFocusHandler(this)" onblur="cmbPeople_CallBlurHandler(this)"></select> </body> </html> 

Avec un simple gestionnaire d'état, peut-être?

 var isFocus = false; function cmbPeople_CallFocusHandler(control) { if(!focus){ focus = true; cmbPeople_OnFocusHandler(); } } function cmbPeople_CallBlurHandler(){ isFocus = false; }