javascript - ¿Cómo puedo detectar si un navegador admite la etiqueta de parpadeo?
html dom (1)
La etiqueta HTML <blink>
, en los navegadores que la admiten (es decir, Mozilla Firefox y Opera), hace que su contenido parpadee y se apague, pareciéndose al efecto de una luz estroboscópica lenta.
Estoy escribiendo un paquete de polyfills para HTML no estándar, incluida la etiqueta de blink
. La implementación del comportamiento de parpadeo es bastante simple.
(function blink(n) {
var blinks = document.getElementsByTagName("blink"),
visibility = n % 2 === 0 ? "visible" : "hidden";
for (var i = 0; i < blinks.length; i++) {
blinks[i].style.visibility = visibility;
}
setTimeout(function() {
blink(n + 1);
}, 500);
})(0);
(Puedes ver esto en acción )
Pero esto no detecta si el navegador ya admite la etiqueta de blink
, y en los navegadores que ya lo admiten, habrá un efecto de doble parpadeo. Necesito una detección de características que determine si el navegador admite parpadeo, y si no lo hace, entonces vuelve a caer en mi polyfill de Javascript.
No quiero hacer la detección del navegador, ya que esa solución no es escalable, y dado que las personas pueden desactivar el comportamiento de blink
en sus preferencias de Firefox, esa solución no es efectiva.
¿Hay alguna forma de detectar el soporte para el elemento de blink
?
Acabo de investigar un poco sobre el tema y creo que puedo encontrar una respuesta ...
Estoy seguro de que eres consciente de la detección de soporte de propiedad CSS? Bueno, hay una text-decoration: blink
propiedad de CSS. Entonces, si el navegador admite <blink>
también debe admitir la propiedad CSS!
Esta es la detección de propiedades CSS normal, es decir, para detectar que textDecoration
es compatible, haga esto:
if (document.createElement("detect").style.textDecoration === "") {
// textDecoration supported
}
Quizás podrías probar algo como esto:
if (document.createElement("detect").style.textDecoration === "blink") {
// textDecoration: blink supported ?
}
o en ese sentido ...
Actualizar
Tengo 4 navegadores y así lo he probado con 4 navegadores. De esos 4, solo FireFox admite la etiqueta de parpadeo. <blink>
está registrado en el documento HTML como un elemento "Span" en FF, pero en los otros 3 navegadores está registrado como un elemento unknown
.
<html>
<head>
<script type="text/javascript">
function investigate() {
var blinker = document.getElementsByTagName("blink")[0];
document.getElementById("monitor").innerHTML += blinker;
}
</script>
</head>
<body onload="investigate()">
<blink>Hello, blink!</blink>
<div id="monitor"> </div>
</body>
</html>
Salida
Internet Explorer [7,8,9] no es compatible
Hola blink
[objeto]
Chrome [18] no es compatible
Hola blink
[objeto HTMLUnknownElement]
Safari [5] no es compatible
Hola blink
[objeto HTMLElement]
FireFox [3.6] apoyado
Hola blink
[objeto HTMLSpanElement]