Angularjs $document [0].activeElement вместо $document.activeElement

Я пишу директиву-заполнителем с использованием угловых символов.

В обработчике кликов я хочу проверить, одинаковы ли элемент и document.activeElement.

Я пытался использовать $docuemnt.activeElement для этого, но всегда был undefined. Но когда я использовал $document[0].activeElement, я получаю активный элемент.

Является ли $document[0].activeElement правильным способом доступа к текущему активному элементу? Или делаете что-то не так?

Ответ 1

Нет, $document - это завершенная версия document, она завернута с использованием jQlite, которая является крошечной версией jQuery, поэтому $document не имеет никакого метода под названием activeElement, потому что document находится внутри $document, поэтому вам придется использовать

$document[0].activeElement

или

document.activeElement

Вы также можете создать глобальную переменную, которая представляет собой завершенную версию activeElement.

var $activeElement = angular.element(document.activeElement);
$activeElement.attr('focused', 'yes'); // Example usage

Ответ 2

В качестве дополнительной заметки вы используете приведенный выше ответ с помощью:

$document[0].activeElement

Затем вы на самом деле являетесь массивом активных элементов, поэтому вам нужно использовать:

$document[0].activeElement[0]

или

angular.element($document[0].activeElement)[0]