2017-05-05 5 views
0

여러 번 발사의 ContextMenu 이벤트를 클릭 오른쪽 나는 코드 아래와 같이했습니다

map.getViewport().addEventListener('contextmenu', function (e) { 
      e.preventDefault(); 
      console.log(e.x); 
      openContextMenu(e.x, e.y); 
     }); 

기본적으로 나는 openlayer 맵의 ContextMenu를 추가하려합니다. 그러나 이상한 행동이 일어나고 있습니다. 마우스 오른쪽 버튼을 클릭하면 이벤트 리스너가 여러 번 올립니다. 시대의. 즉, 위의 코드에서 console.log는지도를 마우스 오른쪽 버튼으로 한 번 클릭하여 30 번 이상 인쇄합니다.

이제 플래그를 사용하여이 문제를 처리하면 컨텍스트 메뉴가 렌더링되지 않습니다. 예를 들어 openlayer는 여러 번 호출해야합니다. 그러나 청취자에 대해 복잡한 작업을 수행하려고하므로 오른쪽 클릭 한 번으로 여러 번 호출 할 수는 없습니다.

어떻게 해결할 수 있습니까? 3.0

답변

0

귀하의 코드는 한 번만 저와 이벤트가 발생 작동 openlayer 내가 사용하고지도를

을 openlayer 마우스 오른쪽 클릭 컨텍스트 메뉴를 추가하는 다른 더 좋은 방법이 있나요. 이 스 니펫이 페이지에서 여러 번 실행되는 컨텍스트 내에있을 수 있습니까? 즉, 이벤트 리스너가 두 번 이상 추가됩니까? 그렇다면 OpenLayers는 각 리스너가 동일하더라도 각각의 리스너를 따로 등록하므로 클릭하면 모두 종료됩니다.