Panzoom: Масштабирование пальцем не работает в Android Chrome 55

Созданный на 3 янв. 2017  ·  14Комментарии  ·  Источник: timmywil/panzoom

Тема выпуска

Масштабирование пальцем не работает в Android Chrome 55.

Обновление - демонстрационная и тестовая страницы также терпят неудачу:
Pinch Zoom не работает на устройстве Android с Chrome 55 ни на одном из демонстрационных элементов здесь: https://timmywil.github.io/jquery.panzoom/demo/
https://timmywil.github.io/jquery.panzoom/test/ также не работает.

Оба приведенных выше кода отлично работают на одном устройстве с удаленными обновлениями Chrome.

Исходный отчет о проблеме:
Как и # 308, я уже некоторое время использую jquery.panzoom, и он работает безупречно. Chrome 55 сломал его на Android. В моем случае «Панорама» - это нормально, но «Масштабирование пальцем» вызывает панорамирование и мигание, а не масштабирование.
Если я удалю обновления для Chrome, проблема исчезнет. Проблема не очевидна в iOS Safari или более ранней версии Android Chrome.

Ваше окружение

  • версия jquery.panzoom 2.0.5
  • версия jquery 2.1.1
  • Chrome 55 на Android Lollipop.

Обновление - jquery.panzoom 3.2.2 имеет ту же проблему, а также другие проблемы с локализацией. Масштабирование пальцем проблематично только на Android Chrome 55.

Самый полезный комментарий

Кажется, Chrome 55 запускает события касания и указателя. Одно уродливое исправление, которое сработало для меня, - это удаление слушателя указателя вниз. Итак, строка 940 становится:

var str_down;
if (getChromeVersion() >= 55 && 'ontouchstart' in window) {
    str_down = 'mousedown' + ns + ' MSPointerDown' + ns;
}
else {
    str_down = 'mousedown' + ns + ' pointerdown' + ns + ' MSPointerDown' + ns;
}

См http://stackoverflow.com/a/4900484/424563 для getChromeVersion () осущ.

Протестировано с использованием последней версии jQuery.

Все 14 Комментарий

Я могу подтвердить, что масштабирование пальцем полностью перестало работать и в Chrome 55. Мне жаль, что у меня не было знаний в области программирования, чтобы даже попытаться исправить.

У меня точно такая же проблема. С 3.2.2, но, похоже, он работает на некоторых устройствах, но не на других. Например, Samsung на Android 6.0.1 с Chrome 55 не работает, в то время как точно такие же Android и Chrome на устройстве Nexus работают отлично.

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

https://yagolopez.github.io/Webcams_de_Asturias/www/#/app/meteo

Пожалуйста, исправьте это как можно скорее.

Исправление:

С последней версией jquery и panzoom, похоже, работает этот хакерский прием:

https://github.com/timmywil/jquery.panzoom/issues/303#issuecomment -267853623

Интересно, может ли кто-нибудь помочь мне с моей дилеммой: я использую версию 2.0.5 в течение двух лет, и она отлично работает на моем мобильном веб-сайте и в приложении для телефонных разговоров. Единственная проблема - ущипнуть, чтобы увеличить Android Chrome 55

Я могу увеличить масштаб, работая в версии 3.2.2, закомментировав строку, отмеченную в №303. Проблема в том, что 3.2.2 вводит проблемы с размером и позиционированием, а setMatrix () добавляет явно ложные переводы. В этой системе есть несколько открытых проблем и несколько попыток исправить 3.2.2, но она не кажется такой стабильной, как 2.0.5. (За исключением проблемы Chrome 55).

Я попытался заменить event.pageX на event.originalEvent.pageX и event.pageY на event.originalEvent.pageY в 2.0.5 (как предлагают bodgybrothers в # 303 для версии 3.2.2), но это не исправляет, и я не в состоянии идти дальше, пытаясь заставить 2.0.5 работать с масштабированием пальцев на Android Chrome 55.

Моим лучшим результатом было бы исправление 2.x, но я не знаю, активно ли он развивается. В отсутствие исправления для 2.x, похоже, мой единственный вариант - дождаться новой версии 3.x (4?), В которой отсутствуют проблемы позиционирования, для которых люди отправляют изменения.

Может ли любой добрый человек добавить какие-либо мысли или информацию, чтобы помочь моему решению?
Ваше здоровье
Джон

Еще я столкнулся с проблемой позиционирования при обновлении до версии 3.2.2.
Я отсортировал его, добавив высоту и ширину к моему контейнеру масштабирования.
Для меня это сработало.

position:relative; height:100%; transform:matrix(1, 0, 0, 1, 0, 0); transform-origin: 50% 50% 0;

Кажется, Chrome 55 запускает события касания и указателя. Одно уродливое исправление, которое сработало для меня, - это удаление слушателя указателя вниз. Итак, строка 940 становится:

var str_down;
if (getChromeVersion() >= 55 && 'ontouchstart' in window) {
    str_down = 'mousedown' + ns + ' MSPointerDown' + ns;
}
else {
    str_down = 'mousedown' + ns + ' pointerdown' + ns + ' MSPointerDown' + ns;
}

См http://stackoverflow.com/a/4900484/424563 для getChromeVersion () осущ.

Протестировано с использованием последней версии jQuery.

@dagged : Спасибо за это, но я обнаружил, что масштабирование пальцем в Chrome 55 отлично работает в Panzoom 3.2.2 с исправлением в # 303:
Had a quick hack in the code and commenting out line 1164: this.panning = true;
Моя проблема с Panzoom 3.2.2 заключается в том, что позиционирование запутано, что в моем приложении исправление, предложенное выше, предложенное @pravid , похоже, не исправляет (все равно спасибо, pravid.)

@dagged
В моем случае обходной путь # 303 не работает на android 6 samsung Galaxy S6.
ваш обходной путь отлично работает !!! спаси мои дни. Спасибо!!!

@dagged ты спаситель. Спасибо!!!

@ nich008
Ошибка 2.0.5 - window.PointerEvent истинно.
так что скройте строку 32-39, строку 74; строка 80 var pointerEvents = false;
использовать событие касания без указателя

@chfeizy
На первый взгляд это, кажется, исправляет. Спасибо!!!
[править] Да, все работает хорошо - спасибо.

Дубликат № 303

@jcnventura : Эта проблема возникла в Panzoom версии 2.0.5, так что это не просто обман # 303. Обратите внимание, что есть комментарий от chfeizy, который устраняет проблему для версии 2.0.5, что делает ее более надежным решением, чем 3.2.2.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги