En primer lugar gracias por cualquier ayuda futura!
Estoy creando un script de notificación que modifica la pestaña del título para que aparezca el (1). Estoy extrayendo el número de alertas de una variable notificar_recuento actualizada por el sitio web.
La situación a la que me enfrento es que:
1. El (1) aparece en la pestaña pero se duplica cada vez que se ejecuta el nuevo intervalo de actualización.
ej: (1) mi sitio, luego (1) (1) mi sitio, etc...
por ejemplo: notificar_cuenta = 1 -> (1) mi sitio -> notificar_cuenta = 2 -> (1) mi sitio
var numb = notify_count.toString(); function changeTitle() { var newTitle = '(' + numb + ') ' + document.title; document.title = newTitle; } function newUpdate() { var update = setInterval(changeTitle, 2000); }Debe verificar si el título ya comienza con (notify_count) . Si es así, debe reemplazar eso en lugar de agregar el conteo nuevamente al principio.
function changeTitle() { let prefix = `(${notify_count})`; if (document.title.match(/^\(\d+)\)/) { document.title = document.title.replace(/^\(\d+)\)/, prefix); } else { document.title = `${prefix} ${document.title}`; } } } function newUpdate() { var update = setInterval(changeTitle, 2000); }Otra opción es guardar el título original en otra variable cuando se carga la página.
let original_title = document.title; function changeTitle() { document.title = `(${notify_count}) ${original_title}`; } function newUpdate() { var update = setInterval(changeTitle, 2000); }Está obteniendo un título duplicado, por ejemplo (1) (1) my site
Debido a esto;
var newTitle = '(' + numb + ') ' + document.title; document.title = newTitle; Está configurando document.title al valor de newTitle pero está utilizando el valor existente de document.title al definir newTitle . En esencia, esta línea agrega "(num)" al document.title una y otra vez.
La primera vez a través de document.title es "Mi sitio" antes de agregar "(num)". Luego, la próxima vez que pase por document.title es "(1) Mi sitio", que luego se usa para definir newTitle como "(1) (1) Mi sitio". etc...
Para corregir esto, puede usar RegEx en changeTitle() para reemplazar solo la parte "(num)" del documento.título con String.Replace() o puede definir una nueva var en la parte superior para contener el document.title original y use esa var como base desde la cual construir su newTitle