我正在寻找使用JS旋转网页文档标题。例如:
更改为Domain.com
至New Messgae - Domain.com
,然后返回至Domain.com等,与Facebook在使用聊天时使用新邮件的方式非常相似。
我已经研究过使用SetInterval但它只排除了一个表达式?是否可以更改此设置或使用SetInterval使用错误的函数?
$(document).ready(function() {
setInterval(function()
{
$(document).attr('title', 'New Message — Domain.com');
},
2000);
});
答案 0 :(得分:3)
$(document).ready(function() {
var titles=['title1','title2','title3'];
setInterval(function()
{
$(document).attr('title', titles[0]);
titles.push(titles.shift());
},
2000);
});
答案 1 :(得分:1)
嗯,你可以不使用像这样的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;
}
我不能保证上面的代码能够正常工作,但它应该可以工作!
答案 2 :(得分:1)
现在,您每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
}
答案 3 :(得分:0)
这是我使用Dr.Molle解决方案想出来的。
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;
}
但是我确实发现当我在函数外面声明title_change时,我似乎无法让setInterval停止循环。当count>> = 1时,进程开始,但当它返回为0时,clearInterval和clearTimeout没有停止change_loop。