Вот моя текущая ситуация:
У меня есть веб-страница, содержащая пару прокручиваемых элементов div. Каждый из этих элементов содержит несколько объектов. Я использую YUI для отображения всплывающих меню действий, которые можно выполнить над каждым объектом. Каждый объект имеет свое собственное меню, связанное с ним, которое создается и отображается динамически. Всплывающие меню могут быть большими и могут перекрывать границы прокручиваемого элемента div.
Из того, что я считаю, есть проблемы с фокусом (меню должны быть доступны), когда я наводю указатель мыши на действие, которое находится на вершине края прокручиваемого элемента div, элемент div автоматически прокручивает, перемещая содержимое, но оставляя меню стационарное. Попытка динамически перемещать меню, когда это происходит, - это не то, что я хочу делать, так как считаю, что это будет плохо для пользователя.
Так что мне нужно, чтобы это фокусированное меню не прокручивало div. Моя идея обеспечить лучший пользовательский интерфейс состоит в том, чтобы предотвратить прокрутку этих внутренних элементов при открытом меню. Это оставляет меню, расположенное в оптимальном месте, чтобы показать пользователю, над каким элементом выполняется действие. Если пользователь хочет прокрутить поле, он может щелкнуть, чтобы закрыть меню, а затем прокрутить в обычном режиме.
Как я могу это сделать? Мне нужно решение, которое работает во всех основных браузерах.
Моей первой мыслью было прослушать событие onscroll для этого конкретного элемента. К сожалению, кажется, что не существует простого способа предотвратить прокрутку. Например, мой код события Javascript выполняется после фактической прокрутки.
Затем я подумал, что, поскольку мой код запускается после прокрутки объекта, я мог просто сбросить obj.scrollTop и obj.scrollLeft . Конечно же, похоже, что это работает, хотя я беспокоюсь, что в медленных браузерах пользователь увидит содержимое внутри div "прыжок вокруг". Также было бы неплохо, если бы количество прокручиваемого элемента было частью объекта события. Это где-то застряло? Я ищу альтернативу необходимости хранить переменные scrollTop и scrollLeft для этого элемента, а затем использовать их, пока прокрутка временно отключена.
Как лучше всего решить эту проблему?