Como detectar o suporte `focusin`?

Graças aPerfection mata, podemos usar o seguinte JavaScript para detectar o suporte a eventos:

function hasEvent(ev) {
    var elem = document.createElement('a'),
        type = 'on' + ev,
        supported = elem[type] !== undefined;
    if (!supported) {
        elem.setAttribute(type, 'return;');
        supported = typeof elem[type] === 'function';
    }
    elem = null;
    return supported;
}

Isso funciona pela única vez que preciso: detectandomouseenter Apoio, suporte;hasEvent('mouseenter') retornará false no Chrome, Firefox, etc., como deveri

Mas agora estou tentando "consertar" navegadores que não suportam ofocusin efocusout events.De acordo com PPK, isso é basicamente o Firefox. Infelizmente, o Chrome e o Safari estão listados como tendo suporte "incompleto", pelo seguinte motivo:

@Safari e o Chrome acionam esses eventos apenas com addEventListener; não com registro tradicional.

Em geral, tudo bem; Eu só estaria usandoaddEventListener de qualquer forma. Istofa significa, no entanto, que detectar suporte viaelem.onfocusin !== undefined não vai funcionar. Eu testei e é verdade:

<p>Do I support <a href="#">focusin</a>?</p>

<script>
var elem = document.getElementsByTagName('p')[0];

// hasEvent method defined here
function listener() {
    var response = hasEvent('focusin') ? 'Yes!' : 'No...';
    alert(response);
}

elem.addEventListener('focusin', listener, false);
</script>

Os alertas acimaNo... no Chrome !! Existe alguma maneira de detectar se o navegador suportafocusin, sem usar o sniffing do navegador?

questionAnswers(3)

yourAnswerToTheQuestion