Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.02.2021, 22:16
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Динамический favicon
Здравствуйте товарищи!
Чат умеет выводить во вкладку браузера (в title) уведомления о новых сообщениях. Хочу попробовать одновременно с этим менять favicon. Нашел вот такой скрипт:

let iconNew = 'https://noviy-kovcheg.ru/favicon.png'; 
    function changeFavicon() {
    document.getElementById('favicon').href = iconNew; 

    function newUpdate() { 
     update = setInterval(changeFavicon, 3000);
}

var docBody  = document.getElementsByTagName('body')[0];
docBody.onload = newUpdate;


А вот фрагмент кода который как я понимаю меняет title:

kide.avisar = {
	mensajes_nuevos: 0,
	privados_nuevos: 0,
	avisar: false,
	original_title: "",

	onFocusGained: function () {
		//chrome bug
		kide.avisar.avisar = false;
		setTimeout(function () {
			document.title = kide.avisar.original_title;
		}, 100);
	},
	onFocusLost: function () {
		kide.avisar.avisar = true;
		kide.avisar.mensajes_nuevos = 0;
		kide.avisar.privados_nuevos = 0;
	},
	handleVisibility: function () {
		if (typeof window.onfocus == "function") {
			var focus = window.onfocus;
			window.onfocus = function () {
				kide.avisar.onFocusGained();
				(focus)();
			};
		}
		else {
			window.onfocus = kide.avisar.onFocusGained;
		}
		if (typeof window.onblur == "function") {
			var blur = window.onblur;
			window.onblur = function () {
				kide.avisar.onFocusLost();
				(blur)();
			};
		}
		else {
			window.onblur = kide.avisar.onFocusLost;
		}

		kide.avisar.original_title = document.title;
		kide.events.add('onPrivadosReload', kide.avisar.onPrivadosReload);
		kide.events.add('onAjaxReload', kide.avisar.onAjaxReload);
	},
	onPrivadosReload: function (xml) {
		if (kide.avisar.avisar) {
			var nuevos = xml.getElementsByTagName('mensaje').length + xml.getElementsByTagName('mensaje_offline').length;
			kide.avisar.privados_nuevos += nuevos;
			kide.avisar.changeTitle();
		}
	},
	onAjaxReload: function (xml) {
		if (kide.avisar.avisar) {
			kide.avisar.mensajes_nuevos += xml.getElementsByTagName('mensaje').length;
			kide.avisar.changeTitle();
		}
	},
	changeTitle: function () {
		if (kide.avisar.privados_nuevos > 0 || kide.avisar.mensajes_nuevos > 0) {
			var msg = kide.msg.avisar;
			msg = msg.replace("%p", kide.avisar.privados_nuevos);
			msg = msg.replace("%m", kide.avisar.mensajes_nuevos);
			document.title = msg;
		}
	}
};
kide.onLoad(function () {
	kide.avisar.handleVisibility();
}, function () { });


Куда только не вставлял код, или ломает чат или не работает
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2021, 22:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Ubivectel,
строка 63 добавить

document.querySelector("link[rel~='icon']").href = 'https://noviy-kovcheg.ru/favicon.png';
Ответить с цитированием
  #3 (permalink)  
Старый 16.02.2021, 23:05
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Работает, но остается когда переходишь на эту вкладку браузера
Ответить с цитированием
  #4 (permalink)  
Старый 16.02.2021, 23:53
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Как-то сделал, вставил после строки:

document.title = kide.avisar.original_title;


строку:

document.querySelector("link[rel~='icon']").href = 'исходный фавикон';


может не лучший вариант, но работает. рони спасибо )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический календарь datetimepicker открывается только со второго фокуса prog77 jQuery 1 10.07.2017 21:24
Динамический темплейт serrrgggeee Angular.js 0 01.07.2016 07:32
Динамический список из DIV`ов и INPUT`ов Andrew_li jQuery 5 09.06.2011 15:23
Динамический массив vah-smile Элементы интерфейса 2 30.03.2011 15:19
Как узнать динамический код страницы? gosha13 Общие вопросы Javascript 5 27.07.2009 13:31