Из-за проблемы, описанной в этом вопросе У меня есть ситуация, когда мне нужно прикрепить событие mousewheel к раскрывающемуся списку только при его раскрытии (я делаю это в событии onclick). Однако мне нужно удалить событие mousewheel, когда список свернут. Как мне обнаружить это?
Я не могу просто использовать событие onchange, потому что пользователь, возможно, фактически не изменил свой выбор. Я пробовал событие onblur, но в большинстве браузеров (кроме IE) выпадающий список остается сфокусированным, когда список свернут.
Приветствие.
var list = document.getElementById("list");
list.onclick = function (e) {
// attach mousewheel
list.onmousewheel = function (e) {
// ...
}
// attach click off
// This event fires fine in all browsers except FF when the list is expanded.
// In firefox it only fires when anywhere in the document is clicked twice.
// The first click closes the drop down list as expected and the second one
// fires the event.
window.document.onclick = function (e) {
list.onmousewheel = null;
window.document.onclick = null
}
};
EDIT:
К сожалению, решение от Meder не работает в Firefox. Событие щелчка по документу не запускается, пока я дважды не щелкну в выпадающем списке. Как мне обойти это? Он отлично работает в IE.
EDIT2:
Я провел еще несколько тестов, и следующие браузеры ведут себя как ожидалось
Для запуска Firefox в окне требуется 2 щелчка, а Safari вообще не работает.
Похоже, что даже когда вы щелкаете по выпадающему списку, Firefox сохраняет за собой фокус Лишь после второго щелчка раскрывающийся список со временем теряет фокус.