【问题标题】:Simulate escape key press without jquery模拟没有 jquery 的转义键按下
【发布时间】:2013-08-06 08:18:47
【问题描述】:

我想(单元)测试我的 AngularJS 应用程序而不使用 jQuery,因为 jQuery 将取代 jqLit​​e,而在真正的应用程序中 jQuery 也将不可用。 jQuery 和 jqLit​​e 之间存在真正的区别,因此在单元测试中为 AngularJS 提供 jQuery 是有风险的。

我的大多数测试现在在没有 jQuery 的情况下都可以正常工作,但我需要为转义键触发 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);

【问题讨论】:

    标签: unit-testing angularjs jqlite


    【解决方案1】:

    您可以查看 Angular UI @http://angular-ui.github.io/ui-utils/

    <textarea ui-keydown="{27:'keydownCallback($event)'}"></textarea>
    

    【讨论】:

    • 问题不是“我怎样才能最好地听转义按键”,而是“如何在没有 jQuery 的情况下模拟 ESC 按键”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多