Происходит ли событие браузера при изменении стиля полосы прокрутки OS X?

OS X Lion и выше позволяют пользователю включать/выключать плавающие полосы прокрутки в стиле iOS - либо вручную с помощью системных настроек, либо путем подключения мыши.

Браузеры, основанные на WebKit (и, возможно, Opera?) сразу же меняют свой стиль полосы прокрутки - Есть ли событие, которое срабатывает, когда это происходит? (только для WebKit)


Некоторые примечания:

  • OS X запускает NSPreferredScrollerStyleDidChangeNotification, когда пользователь переключает свой стиль полосы прокрутки

  • WebKit не подписывается на это событие (без хитов для него).

  • Я подозреваю, что WebKit обрабатывает это через событие NSViewBoundsDidChangeNotification (которое, я полагаю, срабатывает для просмотра содержимого прокрутки).

  • WebKit обрабатывает это событие внутри -[WebHTMLView _frameOrBoundsChanged], которое кажется одной потенциальной точкой повторной компоновки.

  • Есть также ссылки на это уведомление в WebPDFView, а инспектор WebNodeHighlight - оба они не связаны с этим случаем.

  • -[WebDynamicScrollBarsView adjustForScrollOriginChange], похоже, указывает на то, что события могут быть не запущены (если это так, было бы неплохо увидеть некоторое подтверждение )


Опрос изменений не является приемлемым для меня ответом (производительность и макет, прыгающий после изменения пользователем значения).

Ответы

Ответ 1

Из всего, что я читал до сих пор, во время этого перехода стиля нет события DOM.

Наиболее убедительным примером является создание div overflow: auto, а затем запись всех его событий (в Safari или Chrome) с помощью monitorEvents. При изменении стиля полосы прокрутки ничего не записывается.

У меня есть открытая ошибка веб-кита по этой проблеме (хотя она, вероятно, недостаточно мала, что мы не увидим никаких движений на ней).