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?