Javascript Angularjs keydown事件preventDefault在firefox中不工作

Javascript Angularjs keydown事件preventDefault在firefox中不工作,javascript,angularjs,firefox,angularjs-directive,Javascript,Angularjs,Firefox,Angularjs Directive,在我的angularjs应用程序中,复选框用作切换按钮。此外,我们还有一些其他元素用作按钮 我需要为键盘提供一致的用户体验,这是使这些按钮响应空格和输入键事件的一部分 我创建了一个指令(仅限属性),可以将其添加到html中的相关元素中。此指令查找enter键或空格键。如果找到,它将以编程方式单击元素 提及 问题在于Firefox。如果我通过空格选择复选框,它会单击两次。为什么在这种情况下event.preventDefault()不起作用 PS:上面的方法在Chrome中效果很好。我不知道处理这

在我的angularjs应用程序中,复选框用作切换按钮。此外,我们还有一些其他元素用作按钮

我需要为键盘提供一致的用户体验,这是使这些按钮响应空格和输入键事件的一部分

我创建了一个指令(仅限属性),可以将其添加到html中的相关元素中。此指令查找enter键或空格键。如果找到,它将以编程方式单击元素

提及

问题在于Firefox。如果我通过空格选择复选框,它会单击两次。为什么在这种情况下event.preventDefault()不起作用


PS:上面的方法在Chrome中效果很好。

我不知道处理这个问题的正确方法是什么,我最后在关联空格键事件之前检查了元素是否是按钮、复选框或单选按钮。如果有人感兴趣,这里是更新的JSFIDLE-
<input type="checkbox" ng-click="incCount()" ng-model="model" 
      click-on-keydown/>
angular.module('myApp.directives', [])
    .directive('clickOnKeydown', [function () {
        return {
            restrict:'A',
            link:function (scope, element, attrs) {
                element.bind("keydown", function (event) {
                    if(event.which === 13 || event.which === 32) {
                        console.log('Clicking from directive');
                        element[0].click();
                        event.preventDefault();
                        event.stopPropagation();

                    }
                });
            }
        }
    }]);