shift-scroll для горизонтальной прокрутки

с некоторым удивлением я узнал, что в некоторых программах можно использовать колёсико мыши для горизонтальной прокрутки, удерживая Shift. Очень удобная фича, которую мне немедленно захотелось иметь в своём браузере. Сейчас я использую для этого Panning, который включается кликом средней кнопки, но у него есть свои недостатки. Во-первый, он довольно медленный (или слишком быстрый, если двигать мышь неаккуратно). Во-вторых, можно случайно кликнуть по ссылке или полю ввода, и получить неожиданный результат.

к сожалению, это сочетание кнопок в браузерах уже зарезервировано под переходы вперёд/назад по истории. К ещё большему сожалению, в опере это внезапно! нельзя отключить. И, наконец, в опере это событие нельзя предотвратить яваскриптом (DSK-351368). Так что пришлось использовать Alt, что тоже неплохо. А вот и код:

document.addEventListener(
  'mousewheel',
  function(event){
    if (!event.altKey) return;

    for (
      var target = event.target;
      target;
      target = target.parentNode)
    {
      if (target.scrollWidth <= target.offsetWidth) continue;
      target.scrollLeft -= event.wheelDelta;
      event.preventDefault();
      break;
    }
  },
  false);

Артемий Трегубенко,
,

comments powered by Disqus