2016-07-27 14 views
1

Ich habe dieses einfache eckige Beispiel, wo ich eine Mausklick für eine benutzerdefinierte Aktion erfassen möchte. Das Standardkontextmenü darf nicht angezeigt werden. Ich habe die Fragen hier bei SO gelesen. Leider kann ich es nicht davon abhalten, das im Browser eingebaute Kontextmenü zu öffnen. Ich bin mir sicher, dass mir hier etwas Einfaches fehlt. (Siehe Plunker http://plnkr.co/edit/YieQh23xNUFmPrjZscGB)preventDefault stoppt die Standardmaushandlng nicht

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(); 
    } 
    }; 
}]); 

Antwort

2

Wenn Sie vorhaben, das Kontextmenü zu deaktivieren, müssen Sie auf die contextmenu Ereignis, um hören Hör auf.

dies in Winkel zu erreichen, vielleicht müssen Sie eine benutzerdefinierte Richtlinie hinzuzufügen:

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

funktioniert perfekt! Upate Plunker http://plnr.co/edit/YieQh23xNUFmPrjZscGB – BetaRide