【问题标题】:Catch combination ctrl + n before internet browser using angular在使用角度的互联网浏览器之前捕获组合 ctrl + n
【发布时间】:2014-10-14 09:24:43
【问题描述】:

我在我的应用程序中使用 AngularJS,我想使用组合 Ctrl+N 进入负责在我的应用程序中创建新对象的状态和视图。问题是这种组合在我的互联网浏览器中打开了一个新窗口。

问题是:是否有可能阻止这种组合并使用它转到我的应用程序中的新视图?

我知道ng-keyup 指令,更重要的是我可以捕捉单个键,如 ShiftCtrl,但我想捕捉组合 Ctrl kbd>+N 并转到新视图。

现在我有以下代码:

HTML

ng-keyup="keyPress($event)

角度

$scope.keyPress = function(e) {
    e.preventDefault();
    if (e.ctrlKey) {
        var i = 2;
    }   
};

不幸的是,preventDefault() 方法不起作用,按 Ctrl+N 仍然会打开一个新窗口。

【问题讨论】:

    标签: javascript angularjs keyboard-events


    【解决方案1】:

    我认为此时您可以使用 preventDefault() 。 字符 n 应该是键码 78

     $(document).keydown(function (objEvent) {
      if (objEvent.ctrlKey && objEvent.keyCode== 78) {
       objEvent.preventDefault();
    
       ...
     });
    

    编辑

    【讨论】:

    • 仍然不起作用 - 即使 keyCode 等于 17,它也看不到属性“Ctrl”为真。
    • stackoverflow.com/questions/7295508/… 在这里试试运气:)
    • 我已经看过了。问题是 javascript 捕获 ctrl 或其他键 - 一次只能捕获一个。所以 if-else 语句中的这些条件总是错误的,对我不起作用。
    • 好的,它只适用于某些组合(例如:CTRL + '+')。不幸的是,它不适用于 CTRL + N...
    • 您使用的是哪个浏览器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多