์ฌํ ๋จ๊ณ
๋์์ ์ฌํํ๋ ๋จ๊ณ :
isTrusted:true
์ด๊ณ ๋ค๋ฅธ ํ๋๋ isTrusted:false
์์ฑ์
๋๋ค.( '๊ฐ์ ํฐ์น'๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ ํจ๋์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ํ ๋ฒ๋ง ๋ฐ์ํ์ง๋ง Safari ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์ ๋ ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.)
์์๋๋ ํ๋
isTrusted:true
์์ฑ๊ณผ ํจ๊ป ํ๋์ ํด๋ฆญ ์ด๋ฒคํธ ๋ง ์์ฑ๋์ด์ผํฉ๋๋ค.
Leaflet์ด isTrusted:false
ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ฒ ํํฐ๋ง ํ ์ ์์ต๋๊น?
ํ์ฌ ํ๋
๋ฒ์ 1.6์์๋ ์์๋๋ ๋์์ด ๊ด์ฐฐ๋ฉ๋๋ค. ๋ฒ์ 1.7.1์์ Chrome์ ์์๋๋ ๋์์ ๋ํ๋ด์ง ๋ง Safari๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
๋ ์ด๋ฒคํธ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
MouseEvent 1 :
_simulated: true
composed: false
isTrusted: false
layerX: 15
layerY: 28
offsetX: 15
offsetY: 28
pageX: 410
pageY: 46
screenX: 1390
screenY: 189
timeStamp: 499337
webkitForce: 0
x: 410
y: 38
MouseEvent 2 :
composed: true
isTrusted: true
layerX: 15
layerY: 20
offsetX: 15
offsetY: 20
pageX: 410
pageY: 38
screenX: 1390
screenY: 189
timeStamp: 538265
webkitForce: 1
x: 410
y: 38
_simulated
, composed
, isTrusted
๋ฐ ์๋ง๋ webkitForce
๊ฐ ์ฃผ์ ์ฐจ์ด์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์๋ก ๋ค๋ฅธ ํ์ ์คํฌํ์ Y ์น์๊ฐ ๋ ๊ฐ์ง ์ด๋ฒคํธ.
ํ๊ฒฝ
์ถ๊ฐ ์ปจํ
์คํธ
OpenStreetMap์ด ์ต์ ๋ฒ์ ์ Leaflet์ผ๋ก ์
๋ฐ์ดํธ ๋ ํ ์ฒซ ๋ฒ์งธ ์ด๋ฒคํธ๋ก ์ฌ์ฉ๋๋์ง๋ ๋๊ตฌ ์ค ์ผ๋ถ๊ฐ ๋๊ตฌ๋ฅผ ์ผ๊ณ ๋ ๋ฒ์งธ๋ก ๋๋ ๊ฒ์ ๋ฐฉ์งํจ์ผ๋ก์จ ๋ฌธ์ ๊ฐ ๋ํ๋ฉ๋๋ค. https://github.com/openstreetmap/openstreetmap-website/issues/2811์ ๊ฒ์ ๋ ๊ด๋ จ ๋ฌธ์
๋ฌธ์ ๋ฅผ ์ฌํํ๋ ์ต์ํ์ ์
๋ฌธ์ ๋ฅผ ์ฌํํ๋ ์ต์ํ์ ์
๋ช ํ์ฑ์ ์ํด :์ด ์์ ๋
L.DomEvent.on(container, "click", function(e) {
Leaflet์ด
isTrusted:false
ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ฒ ํํฐ๋ง ํ ์ ์์ต๋๊น?
addOne()
in DomEvent.js
, https://github.com/Leaflet/Leaflet/blob/4f32a5e83525a3a42980c974e48712b058510eb5/src/dom/DomEvent.js#L109 ์ฃผ๋ณ์์ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค.
if-then-else ์ฒด์ธ์ ์ ๋ถ๊ธฐ๊ฐ ์์ผ๋ฉด ์๋ง๋
} else if (Browser.safari && !Browser.mobile && type === 'click') {
handler = function (ev) {
if (ev.isTrusted) { originalHandler(ev); }
}
obj.addEventListener('click', handler, false);
} // etc
๊ทธ๋ฌ๋ ๋๋ (ํ์ฌ) Apple ํ๋์จ์ด๋ฅผ ์์ ํ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ํ ์คํธ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ด์ ๋ฒ์ ์ ๋ฐ์คํฌํฑ Safari์ ์ํฅ์ ๋ฏธ์น ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์๋ฎฌ๋ ์ด์ ๋ ์ด๋ฒคํธ๋ https://github.com/Leaflet/Leaflet/blob/4f32a5e83525a3a42980c974e48712b058510eb5/src/map/handler/Map.Tap.js#L100 ์์ ์ ๊ณต๋ฉ๋๋ค.
๋ฐ๋ผ์ https://github.com/Leaflet/Leaflet/blob/4f32a5e83525a3a42980c974e48712b058510eb5/src/map/handler/Map.Tap.js#L87 ์์ ์กฐ๊ฑด์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ์ ๊ฒ์ผ๋ก
if (this._fireClick && e && e.changedTouches && !(Browser.safari && !Browser.mobile)) {
๊ทธ๋ฌ๋ ๋๋ (ํ์ฌ) Apple ํ๋์จ์ด๋ฅผ ์์ ํ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ํ ์คํธ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ด์ ๋ฒ์ ์ ๋ฐ์คํฌํฑ Safari ๋๋ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ํฅ์ ๋ฏธ์น ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค (๋ฒ๊ทธ๊ฐ firefox ๋ชจ๋ฐ์ผ์์ ์ฌํ ๋ ์ ์์ต๋๊น?).
์ด ๋ฒ๊ทธ๋
https://github.com/Leaflet/Leaflet/pull/7010/files#diff -c2e3d5ef35bf1c4a7c6b549ddf734725R134
@ johnd0e , ๋น์ ์ ๋ณผ ์ ์์ต๋๊น? iOS ๊ณ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ํ์ง๋ง ์๋ํ์ง ์๊ฒ ๋ฐ์คํฌํฑ macOS์ ์ํฅ์ ๋ฏธ์ณค์ต๋๊น?
@IvanSanchez๋ฅผ ์กฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. Mac ๋๋ iOS์ Safari์์ ์ ์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ๋ ๊ฒ์ ๊ธฐ๊บผ์ด ๋์๋๋ฆฝ๋๋ค.
์ถ๊ฐํ์๋ฉด iOS์ Safari์ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ํด ๋ง์ ํ ์คํธ๋ฅผํ์ง ์์์ต๋๋ค.
@ johnd0e , ๋น์ ์ ๋ณผ ์ ์์ต๋๊น? iOS ๊ณ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ํ์ง๋ง ์๋ํ์ง ์๊ฒ ๋ฐ์คํฌํฑ macOS์ ์ํฅ์ ๋ฏธ์ณค์ต๋๊น?
์ด๋ ํ์คํ iOS ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํ ๊ฒ์ด ์์ต๋๋ค. https://github.com/Leaflet/Leaflet/pull/7010 ํ ๋ก ์ ์ฐธ์กฐ
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋๋ฌด ๊ตฌ์ฒด์ ์ด์ง ์๊ธฐ ์ํด ์๋์ ์ผ๋ก safari
์์ฑ์ ์ฌ์ฉํฉ๋๋ค.
๊ฐ๋ฅํ ๋น ๋ฅธ ์์ :
Browser.ios
์์ฑ ์๊ฐBrowser.safari && Browser.mobile
๊ทธ๋ฌ๋ ๋ด์ผ ์ฐ๋ฆฌ๊ฐ ํฐ์น ์คํฌ ๋ ์ด์๋ ๋งฅ๋ถ์ ์ป์ ์ ์๋ค๋ฉด ์ด๋จ๊น์? ๊ทธ๊ฒ์ ๋ค์ ๋ชจ๋ ๊ฒ์ ๊นจ๋จ๋ฆด ๊ฒ์ ๋๋ค.
๊ทธ๋์ ์ ๋ ๋น ๋ฅธ ์์ ( Browser.safari && Browser.mobile
)์ ์ต๋ํ ๋นจ๋ฆฌ ์ ์ฉ ํ ๊ฒ์ ์ ์ํ ๋ค์ ์ฌ๊ธฐ์์ ๊ถ๊ทน์ ์ธ ์๋ฃจ์
์ ๋ํด ๋
ผ์ํฉ๋๋ค. # 6980
* or use `Browser.safari && Browser.mobile`
๋๋์ด ์ ๊ทผ๋ฒ์ ์ข์ํ๋ค ( "๋น ๋ฅด๊ณ ๋๋ฌ์ด"์์ ).
๊ทธ๋ฌ๋ ๋ด์ผ ์ฐ๋ฆฌ๊ฐ ํฐ์น ์คํฌ ๋ ์ด์๋ ๋งฅ๋ถ์ ์ป์ ์ ์๋ค๋ฉด ์ด๋จ๊น์? ๊ทธ๊ฒ์ ๋ค์ ๋ชจ๋ ๊ฒ์ ๊นจ๋จ๋ฆด ๊ฒ์ ๋๋ค.
๋ด ๋๋ต์ ๊ฒฐ๊ตญ # 7200์ด ๋ ๊ฒ์ ๋๋ค :-)
๋ด ๋๋ต์ ๊ฒฐ๊ตญ # 7200์ด ๋ ๊ฒ์ ๋๋ค :-)
์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค)
๊ทธ๋ฌ๋ ์ด์จ๋ ํ์ฌ ์ ๊ทผ ๋ฐฉ์์ ๋จธ๋ฌผ ์์๋ ๋ชจ๋ ๊ฒ์ ๊ณ ์น ๋ค์ ๋ ๋ฉ๋ฆฌ ์ด๋ํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค (# 7200 ๋๋ ๊ธฐํ).
์ด๊ฒ์ด ๋์ผํ ๋ฌธ์ ์ธ์ง ํ์คํ์ง ์์ง๋ง (๊ธฐ์กด ํฐ์ผ ๋์ ํ๊ทธ ์ง์ ์ ์ฉ์ํ์ญ์์ค) ๋ฐ์คํฌํฑ Safari์ 1.7.1์์๋ Shift- ๋๋๊ทธํ์ฌ ํ๋ ํ ์ ์์ต๋๋ค. # 7260์ผ๋ก๋์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ์ด์ด์ ๊ธฐ์ฉ๋๋ค.
@systemed https://s3.amazonaws.com/leafletjs-cdn/content/leaflet/master/leaflet-src.js๋ฅผ ์ฌ์ฉํ์ฌ shift-dragging์ ์๋ํด ์ฃผ์๊ฒ ์ต๋๊น? (์ : https://plnkr.co/edit/v4GzrCYSxpIO1aOo) ์ด๋ฏธ # 7260์ ๋ณ๊ฒฝ ์ฌํญ์ ํฌํจํ๋ master
์ ๋น๋์
๋๋ค.
Spot on-์ ์๋ํฉ๋๋ค. ๐
๋ํ๋ ๋ฐ์ ๊ฐ์ด ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์คํฌํฑ Safari๋ฟ๋ง ์๋๋ผ ๋ ๊ฑฐ์ Edge์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
AFAIK atm tap
ํธ๋ค๋ฌ๋ iOS ์๋ง ํ์
๋ฐ๋ผ์ ... map.options.tap
๊ธฐ๋ณธ๊ฐ์ false
๋ณ๊ฒฝํด์ผ ํ ์๋ ์์ต๋๋ค.
๋ง์คํฐ์์ ๋น๋ ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฒคํธ๋ฅผ ํ์ํ์ฌ ๋ชจ๋ฐ์ผ์์ ์ฝ๊ฒ ํ ์คํธ ํ ์ ์๋๋ก ์ฝ๋ ํ ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
๋ฐ์คํฌํฑ Safari์์ ์ ์๋ํ์ง๋ง ์ํ๊น๊ฒ๋ ๋ชจ๋ฐ์ผ Safari๊ฐ ์ฌ์ ํ ๋ ๋ฒ์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
https://s3.amazonaws.com/leafletjs-cdn/content/leaflet/master/leaflet-src.js ์ JS๊ฐ ์ต์ ๋ฒ์ ์ธ ๊ฒฝ์ฐ ์ฌ์ ํ iOS Safari์์ ๋ ๊ฐ์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
๋ฟก ๋นต๋จ
์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ฌ ํ ์ ์์ต๋๊น?
๋ค๋ฅธ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค.
touchstart
(๋ฐ pointerdown
)์์ ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ click
๋ฐฉ์งํฉ๋๋ค.
https://github.com/Leaflet/Leaflet/blob/dda26ba96d7dc79213818d1bcc0565b6ac3c69c4/src/map/handler/Map.Tap.js#L43
๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ด ์๋ํ์ง ์๋ ์ด์ ๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
@ johnd0e ์ข ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋์ง ํ์ธํ๊ณ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฌ์ฉ ๋ ์์ ์ ํ (์ : ์์ฒด ํด๋ฆญ ํธ๋ค๋ฌ๊ฐ์๋ a
๋๋ button
์ ๊ทธ๋ ์ง ์์ div
)์ ์ฐจ์ด๊ฐ ์์ต๋๊น?
์ฝ๋ ํ์ ์ ๋ฐ์ดํธํ์ฌ ๋ช ๊ฐ์ง ๊ฐ๋จํ ์ด๋ฒคํธ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฝ์์ ๊ธฐ๋กํ์ต๋๋ค. iOS์ ์ด๋ฒคํธ๋์ด ์ ๋ฐ์ดํธ ์ด์ ์ ๋ฐ์คํฌํฑ์์ ๋ณผ ์ ์์๋ ๊ฒ๊ณผ ๋์ผํ ๊ฒ ๊ฐ์ต๋๋ค.
type: click
isTrusted: false
composed: false
_simulated: true
webkitForce: 0
type: click
isTrusted: true
composed: true
webkitForce: 1
๋ํ a
๋ฐ div
์์๋ ๋์ผํ๊ฒ ์๋ํ๋ฉฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ e.preventDefault()
๋ฅผ ์ถ๊ฐํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค.
@ johnd0e๋ฅผ ์๋ํด๋ณด๊ณ ์ถ์ ๋ค๋ฅธ ๊ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
Safari๊ฐ ์์ฒด ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ๋ค์ ์ค์ด ํ์ํ์ง ์์ ์ ์์ต๋๊น?
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋๋ ๋ฐฉ๊ธ ํ์ธํ๊ณ iOS์ Chrome (v85)์ ๋ ๊ฐ์ง ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ฌ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
์ข์, ๋ด๊ฐ ์ฐพ์ ๋ด์ฉ์ ์ฐธ์กฐํ์ญ์์ค.
1) mousedown
/ pointerdown
๋ click
์ทจ์ํ์ง ์์ต๋๋ค. touchstart
์ ์์ต๋๋ค.
2)ํ์ง๋ง ํ์ฌ Leaflet์ ๋ค์ ์ด์ํ ๋์์ํฉ๋๋ค (# 7077) : ํฌ์ธํฐ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ์์์ ๋-ํฐ์น ์ด๋ฒคํธ๋ฅผ ํฌ์ธํฐ ์ด๋ฒคํธ๋ก ๋์ฒดํฉ๋๋ค.
์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ด์ ์ถ๊ฐ ํด๋ฆญ์ํ๋ ์ด์ ์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ ๋๋ก ํด๊ฒฐํ๋ ค๋ฉด # 7029, # 7026 ์ค ํ๋๋ฅผ ์ฑํํด์ผํฉ๋๋ค.
๋ฟก ๋นต๋จ
์์ ๋ฐฉํธ์ผ๋ก ๋น ๋ฅธ ์์ ์ด ๋์์ด๋๋ค๋ฉด (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ฒ๋ค์ ๊นจ๋จ๋ฆฌ์ง ์๋ ๊ฒฝ์ฐ), ์๋ฎฌ๋ ์ด์ ๋ ์ด๋ฒคํธ๊ฐ iOS์ Chrome๊ณผ Safari ๋ชจ๋์์ ์๋ํ๋ ๊ฒ ๊ฐ๋ค๊ณ ์ฃผ์ ์ฒ๋ฆฌํฉ๋๋ค.
@systemed https://s3.amazonaws.com/leafletjs-cdn/content/leaflet/master/leaflet-src.js๋ฅผ ์ฌ์ฉํ์ฌ shift-dragging์ ์๋ํด ์ฃผ์๊ฒ ์ต๋๊น? (์ : https://plnkr.co/edit/v4GzrCYSxpIO1aOo) ์ด๋ฏธ # 7260์ ๋ณ๊ฒฝ ์ฌํญ์ ํฌํจํ๋
master
์ ๋น๋์ ๋๋ค.
https://s3.amazonaws.com/leafletjs-cdn/content/leaflet/master/leaflet-src.js
^์ด ๋ฒ์ ์ ๋ฐ์คํฌํฑ Safari 14.0์์ 1.7.1
๋ณด๋ค ํจ์ฌ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํญํ๊ฑฐ๋ ํด๋ฆญํ๋ฉด ํ ๋ฒ๋ง ์คํ๋ฉ๋๋ค ๐
์์ ๋ฐฉํธ์ผ๋ก ๋น ๋ฅธ ์์ ์ด ๋์์ด๋๋ค๋ฉด (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ฒ๋ค์ ๊นจ๋จ๋ฆฌ์ง ์๋ ๊ฒฝ์ฐ), ์๋ฎฌ๋ ์ด์ ๋ ์ด๋ฒคํธ๊ฐ iOS์ Chrome๊ณผ Safari ๋ชจ๋์์ ์๋ํ๋ ๊ฒ ๊ฐ๋ค๊ณ ์ฃผ์ ์ฒ๋ฆฌํฉ๋๋ค.
๋ชจ๋ ๊ธฐ๊ธฐ (๋ฐ์คํฌํฑ firefox, chrome, ios safari, chrome ..)์์ 2 ๋ฒ ํด๋ฆญ ์ด๋ฒคํธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ๋์๊ฒ ๋ฐ์ํ๊ณ Safari์์๋ง ๋ฐ์ํฉ๋๋ค. Chrome ๋ฐ Firefox๋ MacOS 10.15.6 ๋ฐ Safari 14.0 ์ดํ์๋ง ์ด๋ฒคํธ๋ฅผ ์์ํฉ๋๋ค.
์ผ์์ ์ผ๋ก Leaflet์ 1.6์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ๊ณ ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
์ด ๋ฒ๊ทธ๊ฐ ์์ ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
๋๊ตฌ๋ ์ง ๊ทธ๊ฒ์ ๋ํด ์๋ํฉ๋๊น?
์ด๋ฏธ ๋งํ๋ฏ์ด ๋ฒ๊ทธ๋ ๋งค์ฐ ์ค๋๋ tap
ํธ๋ค๋ฌ (# 6980)๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
์ผ์ ์์ํ๋ ค๋ฉด ๋ช ๊ฐ์ง ๊ฒฐ์ ์ ๋ด๋ ค์ผํฉ๋๋ค : https://github.com/Leaflet/Leaflet/issues/7255#issuecomment -691109158
ํธ์ ๋ด์ ๊ฐ๊ธฐ
์ผ์ ์์ํ๋ ค๋ฉด ๋ช ๊ฐ์ง ๊ฒฐ์ ์ ๋ด๋ ค์ผํฉ๋๋ค. # 7255 (์ฝ๋ฉํธ)
@ johnd0e ์ ๋ ์ด๊ฒ์ ํ ์คํธ ํ ์๊ฐ๋์๊ณ iOS ํ๋์จ์ด๋ ์์ต๋๋ค. ์๋ฌดํผ ๋๋ฅผ ๋ฏฟ๊ณ ์์ด # 7026 (# 7029๋ณด๋ค ๊น๋ํ ๋๋)
๋๊ตฌ๋ ์ง ๊ทธ๊ฒ์ ๋ํด ์๋ํฉ๋๊น?
๋ฉ์ง ๊ฒ ๋ญ์ง ์์, @ PeterPan73? ๋น์ ์ด ๊ณ์ํด์ # 7026๊ณผ # 7029์์ ๋ช ๊ฐ์ ๋น๋๋ฅผ ๋ง๋ค๊ณ , ์ ์ง ๊ด๋ฆฌ์์๊ฒ ๋ ๋ง์ ์๋ ฅ์ ๊ฐํ๋ ๋์ ์ถ๊ฐ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํ ์คํธํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ์ ๋ ๊ทธ๋ฆฐ ๋ผ์ดํ # 7026์ ๋๋ค (# 7029๋ณด๋ค ๊น๋ํ ๋๋)
๋ถํํ๋ # 7026์ ๋ง์ง๋ง ์ปค๋ฐ์์ ๋ค๋ฅธ ๋ฒ๊ทธ ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์ถ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ฉํด์ผํ์ต๋๋ค (# 7029 ๋ฐ # 7059๋ก ํด๊ฒฐํ ์ ์์).
๊ทธ๋์ ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ ์ฌ์ ํ # 7029 ๋ฐ ๊ธฐํ ์ฐ๊ฒฐ๋ PR์ ๋ค๋ฃจ์ด์ผ ํ ๊ฒ์ด๋ฏ๋ก https://github.com/Leaflet/Leaflet/projects/1์์ ๋ชจ๋ ํตํฉํ์ต๋๋ค.
iOS ๊ธฐ๊ธฐ๊ฐ ํ์ฑํ ๋ Chrome 85 DevTools๋ฅผ ์ฌ์ฉํ์ฌ macOS 10.15.7์์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๋ฅผ์ํ ๊ฐ์ฅ ๋น ๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ lodash debounce
ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
์ค๋ ์ ๋์ด ๋ฌธ์ ์ ๊ด๋ จ๋ ๋ฌธ์ ์ ๋ถ๋ช ํ์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์ ๊ฒฝํ์ ๊ฒ์ํ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ Macbook ํธ๋ ํจ๋์์ ๋ฐ์ํ๋ฉฐ์ง๋์ ์ฌ์ฉ์ ์ ์ ์ปจํ
์คํธ ๋ฉ๋ด๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ ๋ ๋ฐ๊ฒฌํ์ต๋๋ค.
์ง๋์ ์ด์ ์ด ๋ง์ถฐ์ง๋ฉด ์ปจํ
์คํธ ๋ฉ๋ด๋ฅผ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ผ๋ก ํด๋ฆญํ๋๋ผ๋ Leaflet์ ์คํ๋์ง ์์์ผํ๊ณ button
๊ฐ์ด 0 ์ธ ์๋ฎฌ๋ ์ด์
๋ _click_ ์ด๋ฒคํธ๋ฅผ ์คํํฉ๋๋ค. ์ด๋ก ์ธํด ์ปจํ
์คํธ ๋ฉ๋ด์ ๋ํ ๋ด ๋ซ๊ธฐ ํธ๋ค๋ฌ.
๋ฒ๊ทธ๋ฅผ ์์ฑํ๋ ค๋ฉด https://leafletjs.com์ผ๋ก ์ด๋ ํ ๋ค์ ๋ค์์ ์ํํ์ญ์์ค.
์ปค์๊ฐ ๋๋๊ทธ ๋ชจ๋์ ์๊ณ ์ง๋๋ฅผ ๋ ๋ฒ ํด๋ฆญํ๋ฉด (ํ ๋ฒ ๋ซ๊ธฐ ์ปจํ ์คํธ ๋ฉ๋ด์ ํ ๋ฒ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ํธ๋ฆฌ๊ฑฐ ํจ)์ง๋๊ฐ ์ ํํฉ๋๋ค.
๋ค๋ฅธ ๋ฌธ์ ์๋ ๊ด๋ จ์ด์์ ์ ์์ต๋๋ค (์ : # 6865).
์ด ๋ ๋ฒ ํด๋ฆญ ์ด๋ฒคํธ (ํ๋๋ ์ ๋ขฐํ ์ ์๊ณ ํ๋๋ ๊ทธ๋ ์ง ์์)๋ ๋ฐ์คํฌํฑ Linux์์ Chrome ๋ฐ Firefox์์ ๋ชจ๋ฐ์ผ์ ์๋ฎฌ๋ ์ด์ ํ ๋ 1.7.1์์ ๋ฐ์ํฉ๋๋ค (1.6์์๋ ๋ฐ์ํ์ง ์์). ํ์ง๋ง ์ค์ Android ํฐ์น ์ฅ์น์์ ์ ์๋ํฉ๋๋ค (Chrome / Firefox ํ ์คํธ ๋จ). ์ง๊ธ์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์์ฒด ๋ฐ์ด์ค ํ์ด๋จธ๋ฅผ ๊ตฌํํ์ฌ ๋ง์ง๋ง ์ด๋ฒคํธ์์ 150ms ์ด๋ด์ ๋ฐ์ํ๋ ํด๋ฆญ์ ํํฐ๋งํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
์ง๊ธ์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์์ฒด ๋ฐ์ด์ค ํ์ด๋จธ๋ฅผ ๊ตฌํํ์ฌ ๋ง์ง๋ง ์ด๋ฒคํธ์์ 150ms ์ด๋ด์ ๋ฐ์ํ๋ ํด๋ฆญ์ ํํฐ๋งํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
@atorger ๋ , ์ด๋ป๊ฒ ๊ตฌํ ํ์
จ๋์? onClick ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ event.originalEvent.preventDefault();
์๋ํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ์ต์ํ์ ์๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น? ๐ ๐
์ง๊ธ์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์์ฒด ๋ฐ์ด์ค ํ์ด๋จธ๋ฅผ ๊ตฌํํ์ฌ ๋ง์ง๋ง ์ด๋ฒคํธ์์ 150ms ์ด๋ด์ ๋ฐ์ํ๋ ํด๋ฆญ์ ํํฐ๋งํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
@atorger ๋ , ์ด๋ป๊ฒ ๊ตฌํ ํ์ จ๋์? onClick ์ด๋ฒคํธ ํธ๋ค๋ฌ์์
event.originalEvent.preventDefault();
์๋ํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ์ต์ํ์ ์๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น? ๊ธฐ๋ ๋ฏธ์
ํ์คํ:
var lastClick = Date.now();
e.addEventListener('click', function(event) {
var now = Date.now();
var diff = now - lastClick;
lastClick = now;
event.stopPropagation();
if (diff > 150) {
// handle the click event
}
});
์ด ๋ฌธ์ ๋ก ์ธํด bindPopup
๊ฐ ๋ง์ปค์ ํจ๊ป ์๋ํ์ง ์์ต๋๋ค.
๋๋ ํ์ด์ด ํญ์ค (๋ฐ ๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ) ์์๋์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์์ ์ ์ผ๋ก ์ฌํ ํ ์ ์์์ง๋ง ํญ ์ต์ ์์ ๋์จ ํํธ๋ ๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ์์๋ ํ์ ์ ์ฌ๋ ๋ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํญ์ ์์ ํ ๋นํ์ฑํํ๋ ์๋ฃจ์ ์ผ๋ก ์ด์ด์ก์ต๋๋ค.
var map = L.map('map', { "tap": false });
๋๋ ํ์ด์ด ํญ์ค (๋ฐ ๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ) ์์๋์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์์ ์ ์ผ๋ก ์ฌํ ํ ์ ์์์ง๋ง ํญ ์ต์ ์์ ๋์จ ํํธ๋ ๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ์์๋ ํ์ ์ ์ฌ๋ ๋ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํญ์ ์์ ํ ๋นํ์ฑํํ๋ ์๋ฃจ์ ์ผ๋ก ์ด์ด์ก์ต๋๋ค.
var map = L.map('map', { "tap": false });
์ด ์๋ฃจ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค, @eikes! ๋๋ ์ค๋์ด ๋ฌธ์ ๋ฅผ ๋ง๋ฌ๊ณ ๊ทธ๊ฒ์ด ํด๊ฒฐ๋์์ต๋๋ค.
๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ์์๋ ํ์ ์ ์ฌ๋ ๋ฐ ํ์ํ์ง ์์ต๋๋ค.
๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ์์ tap
ํธ๋ค๋ฌ๋ ํญ ํ๋์์ contextmenu
์ด๋ฒคํธ๋ฅผ ์๋ฎฌ๋ ์ด์
ํ๋ ๋ฐ ํ์ํฉ๋๋ค.
์ด ๋ฒ๊ทธ๋ ๋ชจ๋ฐ์ผ ์ฅ์น์์์ง๋๋ฅผ ํด๋ฆญํ๋ ค๊ณ ํ ๋ ๋ ๋ฒ์ ํฐ์น๋ฅผ ๋ฐ์์ํต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ํ์ด์ด ํญ์ค (๋ฐ ๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ) ์์๋์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์์ ์ ์ผ๋ก ์ฌํ ํ ์ ์์์ง๋ง ํญ ์ต์ ์์ ๋์จ ํํธ๋ ๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ์์๋ ํ์ ์ ์ฌ๋ ๋ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํญ์ ์์ ํ ๋นํ์ฑํํ๋ ์๋ฃจ์ ์ผ๋ก ์ด์ด์ก์ต๋๋ค.