自动刷新文档标题?

我已经尝试了很多方法让页面标题每3秒自动更新一次,因此标题可以显示它们有多少未读消息。

这是我尝试过的:

setInterval(function() { document.title = ""; }, 3000); 

 $(function() { setInterval(function() { $(this).attr("title", ""); }, 3000); }); 

但它们都不起作用。

这种方法不起作用。 您的PHP语句将在服务器端执行一次,因此无论您在JavaScript中执行什么操作,标题都不会更改多次。

您需要一个基于AJAX的方法,它将成功设置document.title属性:

 $.ajax({ url: 'new_page_title.php', data: {name: 'username', password: 'userpass'}, success: function(data) { document.title = data;}, dataType: 'text' }); 

现在:虽然你肯定可以把这个代码塞进一个setInterval调用中,但我建议每隔3秒检查一次可能会对你的服务器造成一点困难,而且没必要。 每隔15-60秒就会更温和。

 setInterval(function() { $.ajax({ ... }); }, 30000); // milliseconds 

每次需要新数据时,都需要从服务器刷新数据,因为PHP块只在每个页面视图中执行一次(在服务器上)。 制作一个这样的PHP页面:

  

然后动态地拉动数字,如下所示:

 var updater = function() { $.getJSON('data.php',function(jsonuser){ document.title = jsonuser.inboxcc; setTimeout(updater,3000); }); }; setTimeout(updater,3000); 

请注意,我使用setTimeout而不是setInterval ,因为您无法确定每个请求是否会在3秒内返回。 一般来说,使用setTimeout会更好。

为了补充@ mblase75的答案(这是正确的),这里是对你所陷入的常见误解的进一步解释。


PHP是一个服务器端预处理器 ,它输出发送到您的浏览器的HTML和Javascript,然后与任何事情无关。

那么,你的PHP:

   

产量输出:

  

这是您的浏览器所看到的。 就是这样。

JavaScript中的PHP块无法为自己更新信息。 您需要使用AJAX,隐藏的iframe或其他方式更新标题。 此时,您的代码将元素更改为相同的值。

您的PHP代码无法在javascript中解释,因此隐藏隐藏输入中的值:

  

现在你可以在javascript中调用这个值:

 setInterval(function() { document.title = document.getElementById('inboxcc').value; }, 3000);