Panzoom: Android Chrome 55μ—μ„œ ν•€μΉ˜ 쀌이 μž‘λ™ν•˜μ§€ μ•ŠμŒ

에 λ§Œλ“  2017λ…„ 01μ›” 03일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: timmywil/panzoom

문제의 주제

Android Chrome 55μ—μ„œ ν•€μΉ˜ 쀌이 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ - 데λͺ¨ 및 ν…ŒμŠ€νŠΈ νŽ˜μ΄μ§€λ„ μ‹€νŒ¨:
Pinch Zoom은 λ‹€μŒ 데λͺ¨ ν•­λͺ©μ˜ Chrome 55κ°€ μ„€μΉ˜λœ Android κΈ°κΈ°μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 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 버전
  • 제이쿼리 2.1.1 버전
  • Android Lollipop의 Chrome 55.

μ—…λ°μ΄νŠΈ - jquery.panzoom 3.2.2μ—λŠ” λ™μΌν•œ λ¬Έμ œμ™€ ν•¨κ»˜ λ‹€λ₯Έ μ–΅μ œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. Pinch Zoom은 Android Chrome 55μ—μ„œλ§Œ λ¬Έμ œκ°€ λ©λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

Chrome 55λŠ” ν„°μΉ˜ 및 포인터 이벀트λ₯Ό λͺ¨λ‘ μ‹€ν–‰ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜λŠ” ν•œ 가지 λͺ»μƒκΈ΄ μˆ˜μ •μ€ pointerdown μˆ˜μ‹ κΈ°λ₯Ό μ œκ±°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ 라인 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;
}

getChromeVersion() impl에 λŒ€ν•΄μ„œλŠ” http://stackoverflow.com/a/4900484/424563 을 μ°Έμ‘°

μ΅œμ‹  jQuery둜 ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  14 λŒ“κΈ€

크둬 55μ—μ„œλ„ ν•€μΉ˜ 쀌이 μ™„μ „νžˆ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. μˆ˜μ •μ„ μ‹œλ„ν•  수 μžˆλŠ” μ½”λ”© 지식이 μžˆμ—ˆμœΌλ©΄ ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 같은 문제λ₯Ό κ°€μ§€κ³ μžˆλ‹€. 3.2.2μ—μ„œλŠ” 일뢀 μž₯μΉ˜μ—μ„œλŠ” μž‘λ™ν•˜μ§€λ§Œ λ‹€λ₯Έ μž₯μΉ˜μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ Chrome 55κ°€ μ„€μΉ˜λœ Android 6.0.1의 Samsung은 μž‘λ™ν•˜μ§€ μ•Šμ§€λ§Œ Nexus 기기의 λ™μΌν•œ Android와 Chrome은 μ™„λ²½ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ˜¨λΌμΈμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 첫 번째 μ˜΅μ…˜ 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ‹­μ‹œμ˜€. 이미지가 λ‘œλ“œλ  λ•Œ λͺ¨λ°”μΌμ—μ„œ ν•€μΉ˜ 투 쀌이 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

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

빨리 κ³ μ³μ£Όμ„Έμš”.

보정:

μ΅œμ‹  λ²„μ „μ˜ jquery 및 panzoom을 μ‚¬μš©ν•˜λ©΄ 이 해킹을 μ μš©ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

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

λˆ„κ΅°κ°€ λ‚΄ λ”œλ ˆλ§ˆλ₯Ό 도와쀄 수 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€. 2λ…„ λ™μ•ˆ 버전 2.0.5λ₯Ό μ‚¬μš©ν•΄ μ™”μœΌλ©° λͺ¨λ°”일 μ›Ήμ‚¬μ΄νŠΈμ™€ phonegap μ•±μ—μ„œ μ™„λ²½ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€. μœ μΌν•œ λ¬Έμ œλŠ” Android Chrome 55μ—μ„œ ν™•λŒ€/μΆ•μ†Œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

#303에 μ–ΈκΈ‰λœ 쀄을 주석 μ²˜λ¦¬ν•˜μ—¬ 버전 3.2.2μ—μ„œ μž‘μ—…μ„ ν™•λŒ€/μΆ•μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” 3.2.2κ°€ 크기 μ‘°μ • 및 μœ„μΉ˜ 문제λ₯Ό λ„μž…ν•˜κ³  setMatrix()κ°€ λͺ…λ°±νžˆ κ°€μ§œ λ²ˆμ—­μ„ μΆ”κ°€ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 μ‹œμŠ€ν…œμ—λŠ” λͺ‡ 가지 λ―Έν•΄κ²° λ¬Έμ œκ°€ 있고 3.2.2λ₯Ό μˆ˜μ •ν•˜λ €λŠ” μ—¬λŸ¬ μ‹œλ„κ°€ μžˆμ§€λ§Œ 2.0.5만큼 μ•ˆμ •μ μ΄μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€. (Chrome 55 문제만 μ œμ™Έ)

2.0.5μ—μ„œ event.pageXλ₯Ό event.originalEvent.pageX둜, event.pageYλ₯Ό ​​event.originalEvent.pageY둜 λŒ€μ²΄ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ(bodgybrothersκ°€ 버전 3.2.2의 #303μ—μ„œ μ œμ•ˆν•œ λŒ€λ‘œ), μˆ˜μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Android Chrome 55μ—μ„œ ν•€μΉ˜ 쀌과 ν•¨κ»˜ μž‘λ™ν•˜λ„λ‘ 2.0.5λ₯Ό 더 이상 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

λ‚΄ μ΅œμ„ μ˜ κ²°κ³ΌλŠ” 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λŠ” ν„°μΉ˜ 및 포인터 이벀트λ₯Ό λͺ¨λ‘ μ‹€ν–‰ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜λŠ” ν•œ 가지 λͺ»μƒκΈ΄ μˆ˜μ •μ€ pointerdown μˆ˜μ‹ κΈ°λ₯Ό μ œκ±°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ 라인 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;
}

getChromeVersion() impl에 λŒ€ν•΄μ„œλŠ” http://stackoverflow.com/a/4900484/424563 을 μ°Έμ‘°

μ΅œμ‹  jQuery둜 ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

@dagged : κ°μ‚¬ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ Chrome 55의 ν•€μΉ˜ 쀌이 #303의 μˆ˜μ • 사항과 ν•¨κ»˜ Panzoom 3.2.2μ—μ„œ μ œλŒ€λ‘œ μž‘λ™ν•œλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
Had a quick hack in the code and commenting out line 1164: this.panning = true;
Panzoom 3.2.2에 λŒ€ν•œ λ‚΄ λ¬Έμ œλŠ” μœ„μΉ˜κ°€ μ—‰λ§μ΄λΌλŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚΄ μ•±μ—μ„œ @pravid κ°€ μ œμ•ˆν•œ μœ„μ˜ μˆ˜μ • 사항은 μˆ˜μ •λ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€(μ–΄μ¨Œλ“  κ°μ‚¬ν•©λ‹ˆλ‹€.)

@dagged
제 κ²½μš°μ—λŠ” #303 ν•΄κ²° 방법이 Android 6 μ‚Όμ„± Galaxy S6μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
ν•΄κ²° 방법이 νš¨κ³Όμ μž…λ‹ˆλ‹€!!! λ‚΄ 날을 μ €μž₯ν•©λ‹ˆλ‹€. 감사 ν•΄μš”!!!

@dagged 당신은 κ΅¬μ„Έμ£Όμž…λ‹ˆλ‹€. 감사 ν•΄μš”!!!

@nich008
2.0.5 λ²„κ·ΈλŠ” window.PointerEventκ°€ trueμž…λ‹ˆλ‹€.
λ”°λΌμ„œ 32-39ν–‰, 74행을 μˆ¨κΉλ‹ˆλ‹€. 80ν–‰ var pointerEvents = false;
포인터가 μ—†λŠ” ν„°μΉ˜ 이벀트 μ‚¬μš©

@chfeizy
μ²«λˆˆμ— 그것은 그것을 κ³ μΉ  것 κ°™μŠ΅λ‹ˆλ‹€. 감사 ν•΄μš”!!!
예 - 잘 μž‘λ™ν•©λ‹ˆλ‹€ - κ°μ‚¬ν•©λ‹ˆλ‹€.

#303의 쀑볡

@jcnventura : 이 λ¬Έμ œλŠ” Panzoom 버전 2.0.5μ—μ„œ μ œκΈ°λ˜μ—ˆμœΌλ―€λ‘œ μ—„κ²©νžˆ #303의 μ†μž„μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€. 버전 2.0.5의 문제λ₯Ό μˆ˜μ •ν•œ chfeizy의 μ„€λͺ…이 μžˆμ–΄ 3.2.2보닀 더 μ•ˆμ •μ μΈ μ†”λ£¨μ…˜μ΄ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰