我想(单位)测试我的AngularJS应用程序而不使用jQuery,因为jQuery将取代jqLite,而在真正的应用程序中jQuery也将无法使用。 jQuery和jqLite之间存在真正的差异,因此在单元测试中让AngularJS使用jQuery是一种风险。
我的大多数测试现在没有jQuery就能正常工作,但是我需要为escape键触发keydown,我只能找到如何使用jQuery。我将如何以跨浏览器方式在Javascript中执行此操作?
该指令侦听这样的转义键盘:
body.bind('keydown', handledEscapeKey);
var handledEscapeKey = function(e) {
if (e.which === 27) {
e.preventDefault();
scope.$apply(scope.hideTooltip());
}
};
我试过这个,但它似乎不起作用:
if( window.KeyEvent ) {
var evObj = $document.createEvent('KeyEvents');
evObj.initKeyEvent( 'keydown', true, true, $window, false, false, false, false, 27, 0 );
} else {
var evObj = $document.createEvent('UIEvents');
evObj.initUIEvent( 'keydown', true, true, $window, 1 );
evObj.keyCode = 27;
}
elm[0][0].dispatchEvent(evObj);
答案 0 :(得分:-3)
您可以结帐Angular UI @ http://angular-ui.github.io/ui-utils/
<textarea ui-keydown="{27:'keydownCallback($event)'}"></textarea>