Panzoom: O zoom de pinça não funciona no Android Chrome 55

Criado em 3 jan. 2017  ·  14Comentários  ·  Fonte: timmywil/panzoom

Assunto do problema

O zoom de pinça não funciona no Android Chrome 55.

Atualização - as páginas de demonstração e teste também falham:
O Pinch Zoom não funciona em um dispositivo Android com Chrome 55 em nenhum dos itens de demonstração aqui: https://timmywil.github.io/jquery.panzoom/demo/
https://timmywil.github.io/jquery.panzoom/test/ também falha.

Ambos funcionam bem no mesmo dispositivo com as atualizações do Chrome desinstaladas.

Relatório de problema original:
Como o # 308, estou usando jquery.panzoom há algum tempo e ele funciona perfeitamente. O Chrome 55 quebrou no Android. No meu caso, Pan é bom, mas Pinch Zoom causa panorâmicas e flashes e nenhum zoom.
Se eu desinstalar as atualizações do Chrome, o problema desaparece. O problema não é evidente no IOS Safari ou no Android Chrome mais antigo.

Seu ambiente

  • versão de jquery.panzoom 2.0.5
  • versão do jquery 2.1.1
  • Chrome 55 no Android Lollipop.

Atualização - jquery.panzoom 3.2.2 tem o mesmo problema, além de outros problemas de contenção. Apertar o zoom é problemático apenas no Android Chrome 55.

Comentários muito úteis

Parece que o Chrome 55 dispara eventos de toque e ponteiro. Uma solução feia que funciona para mim é remover o ouvinte pointerdown. Portanto, a linha 940 se torna:

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

Consulte http://stackoverflow.com/a/4900484/424563 para getChromeVersion () impl.

Testado com o mais recente jQuery.

Todos 14 comentários

Posso confirmar que o pinch-zoom parou de funcionar totalmente no Chrome 55 também. Eu gostaria de ter o conhecimento de codificação para tentar consertar.

Eu tenho o mesmo problema. Com 3.2.2, mas parece funcionar em alguns dispositivos e não em outros. Por exemplo, Samsung no Android 6.0.1 com Chrome 55 não funciona enquanto exatamente o mesmo Android e Chrome no dispositivo Nexus funcionam perfeitamente.

Mesmo problema aqui. Você pode verificar o ti online. Escolha uma das primeiras opções. Quando a imagem oscila, beliscar para aumentar o zoom não funciona no celular.

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

Por favor, corrija isso logo.

Correção:

Com a última versão do jquery e do panzoom, parece funcionar aplicando este hack:

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

Gostaria de saber se alguém poderia me ajudar com meu dilema: uso a versão 2.0.5 há dois anos e ela funciona perfeitamente no meu site para celular e no aplicativo phonegap. O único problema é beliscar para aumentar o zoom no Android Chrome 55

Posso fazer um gesto de pinça para aumentar o zoom na versão 3.2.2 comentando a linha anotada em # 303. O problema é que 3.2.2 introduz problemas de dimensionamento e posicionamento, e setMatrix () adiciona traduções aparentemente espúrias. Existem vários problemas em aberto neste sistema e várias tentativas de corrigir 3.2.2, mas não parece tão estável quanto 2.0.5. (Exceto apenas o problema do Chrome 55).

Tentei substituir event.pageX por event.originalEvent.pageX e event.pageY por event.originalEvent.pageY em 2.0.5 (como os bodgybrothers sugerem em # 303 para a versão 3.2.2), mas isso não corrige, e não sou competente para ir mais longe tentando fazer o 2.0.5 funcionar com zoom pinch no Android Chrome 55.

Meu melhor resultado seria que o 2.x fosse consertado, mas não sei se ele ainda está desenvolvido ativamente. Na ausência de uma correção para 2.x, parece que minha única opção é esperar por um novo lançamento do 3.x (4?) Que não tem os problemas de posicionamento para os quais as pessoas estão enviando alterações.

Qualquer pessoa gentil pode adicionar quaisquer pensamentos ou informações para ajudar na minha decisão?
Felicidades
John

Também enfrentei o problema de posicionamento ao atualizar para a versão 3.2.2.
Classifiquei adicionando altura e largura ao meu contêiner de zoom.
Para mim, isso funcionou.

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

Parece que o Chrome 55 dispara eventos de toque e ponteiro. Uma solução feia que funciona para mim é remover o ouvinte pointerdown. Portanto, a linha 940 se torna:

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

Consulte http://stackoverflow.com/a/4900484/424563 para getChromeVersion () impl.

Testado com o mais recente jQuery.

@dagged : Obrigado por isso, mas estou descobrindo que o zoom pinch no Chrome 55 funciona bem no Panzoom 3.2.2 com a correção no # 303:
Had a quick hack in the code and commenting out line 1164: this.panning = true;
Meu problema com o Panzoom 3.2.2 é que o posicionamento está bagunçado, o que em meu aplicativo a correção acima sugerida por @pravid parece não resolver (obrigado de qualquer maneira, pravid.)

@dagged
no meu caso, a solução alternativa # 303 não funciona no Android 6 Samsung Galaxy S6.
sua solução alternativa funciona muito bem !!! salve meus dias. Obrigado!!!

@dagged você é o salvador. Obrigado!!!

@ nich008
2.0.5 bug is window.PointerEvent is true.
portanto, oculte a linha 32-39, linha 74; linha 80 var pointerEvents = false;
usar evento de toque sem ponteiro

@chfeizy
À primeira vista, isso parece consertar. Obrigado!!!
[editar] Sim - está funcionando bem - obrigado.

Duplicado de # 303

@jcnventura : Este problema foi levantado no Panzoom versão 2.0.5, portanto, não é estritamente um ingênuo de # 303. Observe que há um comentário de chfeizy que corrige o problema da versão 2.0.5, o que a torna uma solução mais confiável do que a 3.2.2.

Esta página foi útil?
0 / 5 - 0 avaliações