#javascript #html #google-chrome #javascript-events
#javascript #HTML #google-chrome #dom-события
Вопрос:
Рассмотрим следующий код. Если я нажимаю cmbMonkeys
, это вызывает бесконечный цикл предупреждающих сообщений в Google Chrome. Мой обходной путь для cmbPeople
работает нормально. Кто-нибудь знает другой способ предотвратить бесконечные циклы при отображении предупреждений о событиях фокусировки или размытия, без отключения и повторного включения события?
<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>
Ответ №1:
Может быть, с помощью простого обработчика состояния?
var isFocus = false;
function cmbPeople_CallFocusHandler(control) {
if(!focus){
focus = true;
cmbPeople_OnFocusHandler();
}
}
function cmbPeople_CallBlurHandler(){
isFocus = false;
}