Javascript 无法在一定时间间隔后设置document.title
当应用程序在选项卡中打开且该选项卡处于非活动状态时,我将调用blinktab()。选项卡需要闪烁标题2分钟,然后出现超时消息。同时,如果选项卡获得焦点,则应清除超时。有些人说我无法在safari中看到标题的更新。但当我使用document.title签入控制台时,我会看到更新的标题Javascript 无法在一定时间间隔后设置document.title,javascript,Javascript,当应用程序在选项卡中打开且该选项卡处于非活动状态时,我将调用blinktab()。选项卡需要闪烁标题2分钟,然后出现超时消息。同时,如果选项卡获得焦点,则应清除超时。有些人说我无法在safari中看到标题的更新。但当我使用document.title签入控制台时,我会看到更新的标题 function blinkTab(message) { console.debug("In BlinkTab...."); var startTime = new Date().getTime()
function blinkTab(message) {
console.debug("In BlinkTab....");
var startTime = new Date().getTime();
var interval = setInterval(function(){
if(new Date().getTime() - startTime > 120000){
clearInterval(interval);
return;
}
document.title = document.title == message ? ' ' : message;
}, 300);
setTimeout(function(){
document.title = 'timed out.';
}, 120100)
试试这个:
var start_blinking = false;
var startTime, message;
blinkTab("message");
var interval = setInterval(function(){
if(!start_blinking){
return;
}
document.title = document.title == message ? ' ' : message;
if(new Date().getTime() - startTime > 2000){
document.title = 'timed out.';
console.log("done");
start_blinking = false; //done blinking
clearInterval(interval);
return;
}
}, 300);
function blinkTab(message) {
console.debug("In BlinkTab....");
startTime = new Date().getTime();
start_blinking = true;
message = message;
}
你能解释一下你改变了什么以及为什么吗?我把setInterval放在一个全局范围内,因为如果你把它放在一个函数中,函数一结束它就会被销毁。表示解释器是否到达函数的}。setTimeout也一样。您应该在回答中解释,注释是暂时的。它不需要在全局范围内,因为对
clearInterval()
的调用在同一范围内。变量保存在闭包中。