Leaflet 마커에서 rightclick 이벤트를 찾지 못해 mousedown 이벤트를 듣기 시작했습니다. 이 이벤트를 해결하는 방법에서 확인합니다.
if (event.originalEvent.button == 2) {
do_something();
// now i want to stop propagation of the rightclick
return;
}
do_something ()이 호출되었지만 이벤트가 맵으로 전파되고 컨텍스트 메뉴가 표시됩니다. 이벤트가지도로 전파되지 않도록하려면 어떻게해야하나요?
이것은 모든 주요 (즉, IE) 브라우저에서 작동합니까?
답변
첫 번째 대답은 분명히 작동하지 않았으며 현재 동일한 문제에 직면하고 있습니다. 새로운 접근 방식은 다음과 같습니다.
리플렛은이라는 이벤트를 지원합니다 contextmenu
. 리플렛 이벤트 설명서 에서 확인할 수 있습니다 .
사용자가지도에서 마우스 오른쪽 버튼을 누르면 이 이벤트에 리스너가 있는지 기본 브라우저 상황에 맞는 메뉴가 표시 되지 않습니다.
이론적으로 코드
marker.on('contextmenu', function(e) {
this.openPopup();
});
해야 잘 작동합니다. 그러나 분명히 구현이 문서보다 뒤떨어집니다. 현재 (Leaflet 0.4.5)이 contextmenu
이벤트는 폴리 라인 객체에서 완벽하게 작동하지만 마커에서 아직 지원 되지 않는 것 같습니다 .
머지 않아이 기능을 활성화하기 위해 파이프 라인에 작업이있는 것 같습니다 ( 여기 및 여기의 토론 참조 ). 따라서 Leaflet이 신속하게 작동하고 다음 릴리스에서 이벤트를 활성화하기를 바랍니다.
편집 :
구현을 기다리는 것에 대해 말한 것을 무시하십시오. 최신 개발 마스터 브랜치를 다운로드하고 전단지를 직접 작성하면 contextmenu
마커의 이벤트를 완벽하게 지원할 수 있습니다. 행복한 코딩.
답변
IE 및 다른 모든 브라우저에서 기본 동작 방지
event.returnValue = false;
if (event.preventDefault) event.preventDefault();
답변
이 내부 기능을 사용해보십시오 :
L.DomEvent.stopPropagation(event);
트릭을해야합니다.
추신 : 나는 어떤 문서에서도 그것을 발견하지 못했지만 패치에서 사용되는 것을 보았습니다. 자신의 책임하에 사용하십시오. 😉
편집 : 나는 또한이 내부 기능을 발견했다.
L.DomEvent.preventDefault(event);
어느 것이 event.preventDefault()
jQuery 와 거의 같은 것 같습니다 .
답변
우연히 이벤트 중지에 대한 해결책을 얻었습니다.
예를 들어 다음과 같이 이벤트가 생성되면 map.on("click", onMapClick);
이 코드로 이벤트를 중지 할 수 있습니다.map.off("click", onMapClick);