Как определить, поддерживает ли браузер тег blink? - программирование
Подтвердить что ты не робот

Как определить, поддерживает ли браузер тег blink?

Тег HTML <blink> в браузерах, которые его поддерживают (например, Mozilla Firefox и Opera), делает его содержимое мигающим, и оно напоминает эффект медленного света строба.

Я пишу набор полиполков для нестандартного HTML, включая тег blink. Реализация мигающего поведения довольно проста

(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);

(Вы можете видеть это в действии)

Но это не определяет, поддерживает ли браузер тег blink, а в браузерах, которые его уже поддерживают, будет эффект двойного мигания. Мне нужно некоторое обнаружение функции, которое определяет, поддерживает ли браузер мигание, а если нет, то он возвращается на мой Javascript polyfill.

Я не хочу делать обнаружение браузера, потому что это решение не масштабируется, и поскольку люди могут отключить поведение blink в своих настройках Firefox, это решение неэффективно.

Есть ли способ обнаружить поддержку элемента blink?

4b9b3361

Ответ 1

Я просто немного поработал над этим вопросом, и я думаю, что найду ответ...

Я уверен, что вам известно об обнаружении поддержки свойств CSS? Ну, есть свойство CSS text-decoration: blink. Поэтому, если браузер поддерживает <blink>, он также должен поддерживать свойство CSS!

Это обычное определение свойств CSS, то есть обнаружение textDecoration поддерживается следующим образом:

if (document.createElement("detect").style.textDecoration === "") {  
    // textDecoration supported
}  

Возможно, вы могли бы попробовать что-то вроде этого:

if (document.createElement("detect").style.textDecoration === "blink") {  
    // textDecoration: blink supported ?
}  

или вдоль этих строк...

Update

У меня 4 браузера, поэтому я тестировал это с 4 браузерами. Из этих 4 FireFox поддерживает только тег blink. <blink> зарегистрирован в документе HTML как элемент "Span" в FF, но в других трех браузерах он зарегистрирован как элемент 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>

Выход

Internet Explorer [7,8,9] не поддерживается

Привет, мигайте!
[Объект]

Chrome [18] не поддерживается

Привет, мигайте!
[объект HTMLUnknownElement]

Safari [5] не поддерживается

Привет, мигайте!
[object HTMLElement]

FireFox [3.6] поддерживается

Привет, мигайте!
[object HTMLSpanElement]