6

我正在使用 karma 测试用例在 angularjs 中测试焦点事件。但是该元素没有得到关注。在我执行element.focus()并检查元素是否聚焦之后,我得到了错误。那时的document.activeElement就是整个身体。

请提出解决方案。谢谢

4

1 回答 1

8

(这个答案的灵感来自Testing for focus an AngularJS directive

您需要将元素添加到文档正文中,以便document.activeElement使用它。

在调用之前element.focus(),请执行以下操作:

element.appendTo(document.body);

此外,如果您在单元测试中执行此操作,我建议您在测试后删除该元素,否则每个测试都会向主体添加另一个元素(并且可能会影响其他测试的结果)。

afterEach(function () {
    element.remove();
}
于 2013-12-31T23:18:49.893 回答