Найти в Дзене
От Джуна до Лида (IT Jobs)

Как изменить Favicon сайта из JavaScript

В данной статье мы узнаем как изменить Favicon сайта из JavaScript Для замены Favicon во вкладке браузера достаточно у элемента <link rel="icon"> в атрибуте href указать путь до нового изображения, но это работает только при условии, что в <head> прописан только один элемент <link>: <link rel="icon" href="/favicon.ico"> Замена на чистом JS: var list = document.querySelectorAll('link[rel="icon"], link[rel="shortcut icon"]');list.forEach(function(element) { element.setAttribute('href', '/new-favicon.png');}); Замена на JQuery: $('link[rel="icon"], link[rel="shortcut icon"]').attr('href', '/new-favicon.png'); JS Т.к. браузеры поддерживают Favicon в разных форматах, соответственно в <head> прописывают несколько элементов <link>, например: <link rel="icon" href="/favicon.svg" type="image/svg"> <link rel="icon" href="/favicon.png" type="image/png"><link rel="icon" href="/favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="/favicon
Оглавление

В данной статье мы узнаем как изменить Favicon сайта из JavaScript

Для замены Favicon во вкладке браузера достаточно у элемента <link rel="icon"> в атрибуте href указать путь до нового изображения, но это работает только при условии, что в <head> прописан только один элемент <link>:

<link rel="icon" href="/favicon.ico">

Замена на чистом JS:

var list = document.querySelectorAll('link[rel="icon"], link[rel="shortcut icon"]');list.forEach(function(element) { element.setAttribute('href', '/new-favicon.png');});

Замена на JQuery:

$('link[rel="icon"], link[rel="shortcut icon"]').attr('href', '/new-favicon.png'); JS

Т.к. браузеры поддерживают Favicon в разных форматах, соответственно в <head> прописывают несколько элементов <link>, например:

<link rel="icon" href="/favicon.svg" type="image/svg"> <link rel="icon" href="/favicon.png" type="image/png"><link rel="icon" href="/favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="/favicon.ico">

Скорее всего браузер будет использовать иконку в формате SVG.

В таком случаи нужно будет удалить все текущие элементы и вставить новый элемент <link rel="icon" href="/new-favicon.png">:

// Удаление старых элементовvar list = document.querySelectorAll('link[rel="icon"], link[rel="shortcut icon"]');list.forEach(function(element) { element.parentNode.removeChild(element);}); // Вставка нового элементаvar link = document.createElement('link');link.rel = 'icon';link.href = '/new-favicon.png';document.head.appendChild(link);

JQuery:

// Удаление старых элементов$('link[rel="icon"], link[rel="shortcut icon"]').remove(); // Вставка нового элемента$('head').append('<link rel="icon" href="/new-favicon.png">');

Далее приведены примеры разных эффектов смены Favicon c применением JQuery.

Мигание Favicon

В данном примере идет поочерёдная смена двух изображений c использованием таймера SetInterval.

<button id="start">Запустить</button><button id="stop">Остановить</button> <script>var timer;var last_icons = []; $('#start').click(function(){ // Сохранение исходных элементов в массив и удаление last_icons = []; $('link[rel="icon"], link[rel="shortcut icon"]').each(function(){ last_icons.push(this.outerHTML); $(this).remove(); }); // Создание нового элемента link var link = document.createElement('link'); link.rel = 'icon'; $('head').append(link); var counter = 1; timer = setInterval(function(){ if (counter == 1) { link.href = '/favicon-b.png'; counter = 2; } else { link.href = '/favicon-a.png'; counter = 1; } }, 300);}); $('#stop').click(function(){ if (last_icons.length != 0) { clearInterval(timer); // Удаление новой иконки $('link[rel="icon"], link[rel="shortcut icon"]').remove(); // Возвращение исходных last_icons.forEach(function(element) { $('head').append(element); }); }});</script>