Поверните название документа с помощью JavaScript
-
28-09-2019 - |
Вопрос
Я хочу повернуть заголовок документа веб-страницы с помощью JS. Так, например:
Изменить Domain.com
к New Messgae - Domain.com
А затем вернуться к доменку.com и так далее, очень похоже на то, как Facebook делает это с новыми сообщениями при использовании чата.
Я смотрел в использование SetintInterval, но только за исключением одного выражения? Можно ли изменить это или использовать Setinterval неправильную функцию для использования?
$(document).ready(function() {
setInterval(function()
{
$(document).attr('title', 'New Message — Domain.com');
},
2000);
});
Решение
Прямо сейчас вы продолжаете устанавливать одно и то же новое название каждые 2 секунды, то есть вы не увидите изменения после первого изменения. Вам нужно хранить старый заголовок и чередовать двух состояний, отображение старых и новых заголовков:
var oldTitle, timerId;
function flashTitle(newTitle) {
var state = false;
oldTitle = document.title; // save old title
timerId = setInterval(flash, 2000);
function flash() {
// switch between old and new titles
document.title = state ? oldTitle : newTitle;
state = !state;
}
}
function clearFlash() {
clearInterval(timerId);
document.title = oldTitle; // restore old title
}
Другие советы
$(document).ready(function() {
var titles=['title1','title2','title3'];
setInterval(function()
{
$(document).attr('title', titles[0]);
titles.push(titles.shift());
},
2000);
});
Ну, вы можете сделать это, не используя библиотеки JavaScript, как так ...
var title = document.getElementsByTagName('title');
var msg1 = "Domain.com";
var msg2 = "New Message - Domain.com"
var current;
var titleChange;
function changeTitle(){
if(current == msg1){
title = msg2;
current = msg2;
}else{ //If the current title isn't equal to the value of msg1
title = msg1;
current = msg1;
}
titleChange = setTimeout("changeTitle()", 1000);
}
function stopChangingTitle(){
clearTimeout(titleChange);
title = msg1;
}
Я не могу гарантировать, что вышеуказанный код будет работать, но он должен работать!
Это то, что я придумал, используя решение докторамоль.
function changeTitle (mytitle,count) {
console.log(title_change);
console.log(count);
if (count >= 1) {
var titles = [$('title').attr('data-title'),mytitle];
title_change = setInterval(function(){
$(document).attr('title', titles[0]);
titles.push(titles.shift());
},
1000);
} else {
clearInterval(title_change);
//clearTimeout(title_change);
title_change = false;
}
return false;
}
Однако я нашел, однако, когда я заявил Site_Change вне функции, которую я не мог, по-видимому, не мог получить насильник вокруг. Когда считается, что COUNT наступит> = 1, процесс начался, но когда он возвращается как 0, ClearInterval и Clearimeout не остановит изменение_loop.