Ошибка полосы прокрутки Webkit в mousedown - PullRequest
2 голосов
/ 08 сентября 2011

Я испытываю странное поведение с вертикальными полосами прокрутки в браузерах на основе webkit (Chrome и Safari).Вертикальная полоса прокрутки в моем примере видна, как хотелось бы, и работает при прокрутке колесом мыши.

Странно то, что невозможно прокрутить, щелкнув полосу прокрутки.

Мне удалось изолироватьошибка в простом примере jQueryUI.

$(function() {
  var $el = $('<div><div class="huge" style="height:2000px">Webkit can\'t scroll.</div></div>');
  $el.dialog({
    modal: true,
    title: 'Webkit Scrollbar',
    width: 500
  });
});

Здесь можно запустить демонстрацию с необходимым html http://jsbin.com/uculem/8. Попробуйте прокрутить, щелкнув полосу прокрутки и переместив панель.

При извлечении полного DOM, созданного jQueryUI, из отладчика chrome и вставке его в новый html-файл все работает снова.Смотрите здесь: http://jsbin.com/ahitev/2

Я благодарен за любой намек на то, что может вызвать это.Каждый обходной путь приветствуется.

Спасибо,

Флориан

Редактировать

Как указывалось в tw16, это происходит в веб-браузерах, когдаСобытие mousedown фиксируется кодом JavaScript.Это похоже на ошибку в webkit: https://bugs.webkit.org/show_bug.cgi?id=19033

1 Ответ

0 голосов
/ 08 сентября 2011

Это действительно ошибка. Как вы можете видеть здесь: http://bugs.jqueryui.com/ticket/4671

В этом вопросе приведенный ниже код был предложен в качестве ответа.

$el.dialog({
    open: function(event, ui) {
        window.setTimeout(function() {
            jQuery(document).unbind('mousedown.dialog-overlay')
                            .unbind('mouseup.dialog-overlay');
        }, 100);
    },
    modal: true,
    title: 'Webkit Scrollbar',
    width: 500
});

Очевидно, jQueryUI предотвращает прокрутку, захватывая события mouseup / mousedown.

...