Panzoom: Zoom cubit rusak di Chrome v55.02883.91 di Seluler

Dibuat pada 12 Des 2016  ·  20Komentar  ·  Sumber: timmywil/panzoom

Topik masalah

Zoom cubit rusak di Chrome v55.02883.91 di WebView Sistem Seluler dan Android v55.02883.91
Ini berlaku untuk perangkat seluler Android yang menggunakan aplikasi Chrome (browser) dan Cordova menggunakan Android System WebView.

Lingkungan Anda

  • jquery.panzoom.min.js 3.2.2
  • jquery-1.11.1.min.js (untuk aplikasi cordova saya) namun situs web demo juga tidak berfungsi.
  • Chrome rusak (lihat versi di atas). Masih berfungsi menggunakan "Internet" sebagai browser di ponsel Samsung.

Langkah-langkah untuk mereproduksi

  1. Dapatkan samsung galaxy S6 Edge + (atau yang setara)
  2. Tingkatkan Chrome dan/atau WebView Sistem Android ke v55 dll.
  3. Muat di halaman demo
  4. coba dan perbesar harimau - dia merusak pasangan!

Perilaku yang diharapkan

Pada versi Chrome sebelumnya (hingga v54, bekerja dengan sempurna, yaitu memperbesar!

Perilaku sebenarnya

Apa yang terjadi pada v55 adalah yang Anda dapatkan hanyalah menggeser, bukan memperbesar dan gambar yang digeser terkadang 'melompat' di antara jari-jari yang dicubit dan menciptakan efek berkedip saat gambar dibalik di antara kedua jari Anda.

Komentar yang paling membantu

Meretas kode dengan cepat dan mengomentari baris 1164:

this.panning = true;
memungkinkan pinch-zoom lagi untuk saya (dan tidak mempengaruhi panning). Saya tidak dapat melihat di mana this.panning disetel ke false kecuali pada inisialisasi... YMMV.

Semua 20 komentar

Terima kasih telah melaporkan masalah ini. Dalam satu saat aplikasi saya berhenti bekerja pada zoom dan saya tidak tahu mengapa.

Aplikasi saya juga rusak. Perilaku aneh pada chrome yang baru diperbarui (acara seret tampaknya menggulir jendela dan acara cubitan... aneh). Perangkat lain dengan chrome yang tidak diperbarui berfungsi dengan baik. Chrome yang diperbarui tadi malam dan itu juga rusak.

Terima kasih telah membuka masalah ini.
Aplikasi saya juga berhenti berfungsi di desktop Chrome karena alasan ini.

Solusi - tambahkan
touch-action: none;
ke css wadah panzoom Anda dan browser tidak akan melakukan aktivitas sentuhnya sendiri untuk komponen itu.

Ini hal baru: https://developers.google.com/web/updates/2016/10/pointer-events

Solusi - tambahkan
sentuhan-aksi: tidak ada;
ke css wadah panzoom Anda dan browser tidak akan melakukan aktivitas sentuhnya sendiri untuk komponen itu.

Ini hal baru: https://developers.google.com/web/updates/2016/10/pointer-events

Tidak bekerja.

Meretas kode dengan cepat dan mengomentari baris 1164:

this.panning = true;
memungkinkan pinch-zoom lagi untuk saya (dan tidak mempengaruhi panning). Saya tidak dapat melihat di mana this.panning disetel ke false kecuali pada inisialisasi... YMMV.

Meretas kode dengan cepat dan mengomentari baris 1164:
this.panning = benar;
memungkinkan pinch-zoom lagi untuk saya (dan tidak mempengaruhi panning). Saya tidak dapat melihat di mana this.panning disetel ke false kecuali pada inisialisasi... YMMV.

Terima kasih, bekerja untuk saya!

Meretas kode dengan cepat dan mengomentari baris 1164:
this.panning = benar;

Woy itu ada.....

'Peretasan' ini berhasil! Sekarang berfungsi di android 55

Diuji ulang di iOS 10.2, Android 53 - masih berfungsi seperti sebelumnya!

Terima kasih vrtual!

Meretas kode dengan cepat dan mengomentari baris 1164:
this.panning = benar;
memungkinkan pinch-zoom lagi untuk saya (dan tidak mempengaruhi panning). Saya tidak bisa melihat di mana this.panning disetel ke >false kecuali pada inisialisasi... YMMV.

Bekerja dengan baik untuk saya ... terima kasih man
Saya melakukan fungsi zoom saya sendiri, tetapi ini menyelamatkan saya untuk saat ini... terima kasih

Diuji pada android google webview 2016 pembaruan 14 Desember...

Meretas kode dengan cepat dan mengomentari baris 1164:
this.panning = benar;

Ini bekerja sebagian. Terima kasih!

Saya mendapat sebagian keberhasilan mengomentari baris itu, sekarang diperbesar dari kiri atas alih-alih lokasi interaksi, tapi itu peningkatan besar.

Tampaknya chrome terbaru telah berubah di mana referensi pageX dan pageY berada di Acara.
Sampai perubahan chrome itu, semua browser memilikinya di event.pageX....
Sekarang ada di event.originalEvent.pageX...

Saya setengah jalan melalui kode panzoom. Untuk membuatnya berfungsi di chrome menggunakan acara mouse, ubah baris ini:
baris 1191:1192
Ubah dari:
startPageX = event.pageX; startPageY = event.pageY;
ke:
if (typeof event.pageX === 'undefined'){ startPageX = event.originalEvent.pageX; startPageY = event.originalEvent.pageY; }else{ startPageX = event.pageX; startPageY = event.pageY; }
di Baris 1232 tambahkan:
if (typeof coords.pageX === 'undefined'){ coords['pageX'] = coords.originalEvent.pageX; coords['pageY'] = coords.originalEvent.pageY; }

Lebih banyak lagi yang akan datang untuk acara sentuhan saat saya melewatinya.

Mengomentari "this.panning = true;" memperbaikinya tetapi tidak semulus itu lagi dan pada perangkat yang lebih lama, pembesaran menjadi sangat lambat. Saya berasumsi mengomentarinya menggunakan lebih banyak daya CPU dan dengan demikian perangkat yang lebih tua tidak dapat mengikutinya.

Sudahkah Anda mencoba memperbarui ke versi baru (3.2.2) dan mengomentari baris yang diberikan?

Saya dapat mengonfirmasi bahwa bug ini masih ada (dan perbaikannya berfungsi) di v3.2.2 dan Chrome 56.

Saya tidak 100% yakin, tapi menurut saya masalahnya adalah:
Variabel itu ( this.panning ) tampaknya bertujuan untuk mencegah lebih dari satu instance fungsi _startMove agar tidak diaktifkan secara bersamaan. Seharusnya diatur ulang ke false pada acara endEvent (baris 1249), tetapi saya rasa ini tidak berfungsi dengan benar (saya belum menggali cukup dalam untuk mengetahui alasannya). Ini mungkin mengapa ThorConzales menemukan perbaikan menyebabkan penurunan kinerja.

Perbaikan alternatif: Saya menemukan bahwa menambahkan this.panning = false; di akhir fungsi _startMove (setelah baris 1255) juga menyelesaikan masalah ini. Saya belum menguji pada perangkat yang lebih lama jadi saya tidak dapat mengonfirmasi apakah ini membantu dengan hilangnya kinerja, tetapi jika orang lain dapat, saya akan menghargainya.

terima kasih @JamesCatt akan mencoba alternatif Anda.

@timmywil !?

@JamesCatt perbaikan alternatif tidak berfungsi untuk saya dan zoom rusak lagi (dilaporkan oleh pengguna karena saya tidak memiliki perangkat untuk menguji sendiri).

Baris komentar 1164(this.panning = true) tidak berfungsi untuk saya. Saya curang pada baris 1143 yang mengubah moveEvent = 'pointermove' tomoveEvent = 'touchmove', lalu berhasil, saya tidak yakin apakah itu akan menyebabkan masalah lain.

Saya telah menemukan peretasan yang memecahkan masalah ini.

Kita harus mengatur options.which ke -1 pada inisialisasi.

$("a.panzoom-elements").panzoom({
  which: -1,
});

__PERINGATAN__
Peretasan ini hanya berfungsi untuk perangkat sentuh. Mungkin ini tidak bekerja untuk mouse.

Alternatif @JamesCatt tidak berfungsi untuk saya. Peretasan @hshiozawa , setidaknya pada Pixel, menjalankan Android 7.1.2

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

YuriGor picture YuriGor  ·  12Komentar

timmywil picture timmywil  ·  10Komentar

PrinceDhankhar picture PrinceDhankhar  ·  16Komentar

adred picture adred  ·  21Komentar

jsblanco picture jsblanco  ·  19Komentar