自动刷新文档标题?
我已经尝试了很多方法让页面标题每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);