2016-07-27 3 views
1

사용자 지정 작업을 마우스 오른쪽 단추로 클릭하려는 간단한 각도 예제가 있습니다. 기본 상황에 맞는 메뉴가 나타나서는 안됩니다. 나는 여기에서 질문을 읽었다. 불행히도 컨텍스트 메뉴에 내장 된 브라우저를 열 수는 없습니다. 나는 여기서 간단한 것을 놓치고 있다고 확신한다. 당신이 컨텍스트 메뉴를 해제하려는 경우preventDefault가 기본 마우스 처리를 중지하지 않습니다

index.html을

<!DOCTYPE html> 
<html lang="en"> 

    <head> 
    <meta charset="UTF-8" /> 
    <title>My Plunk</title> 
    <script data-require="[email protected]" data-semver="2.2.0" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.js"></script> 
    <script src="script.js"></script> 
    </head> 

    <body ng-app="plunker" ng-controller="myController"> 
    <p ng-mousedown="mouseClicked($event)">Click me!</p> 
    </body> 

</html> 

script.js

var app = angular.module('plunker', []); 

app.controller('myController', ['$scope', '$log', function($scope, $log) { 
    $scope.mouseClicked = function(event) { 
    if (event.button===2) { 
     $log.debug('right mouse click detected') 
     // don't do anything else 
     event.preventDefault(); 
     event.stopPropagation(); 
    } 
    }; 
}]); 

답변

2

(plunker http://plnkr.co/edit/YieQh23xNUFmPrjZscGB 참조), 당신은하기 위해 contextmenu 이벤트를 수신 할 필요가 멈춰.

이 각도에서이를 달성하기 위해, 어쩌면 당신은 사용자 지정 지시문을 추가해야합니다

app.directive('noContextMenu', [function() { 
    return function(scope, ele, attr){ 
    ele.on('contextmenu', function(e) { 
     e.preventDefault(); 
    }); 
    } 
}]); 
<p no-context-menu >Click me!</p> 
+0

완벽한 작품! Uprate plunker http://plnkr.co/edit/YieQh23xNUFmPrjZscg – BetaRide

관련 문제