在所有浏览器打开的标签页中更改页面标题

时间:2018-06-27 06:49:08

标签: php jquery mysql

我有一个可以显示通知的系统。

每14秒钟,jquery将发送一个ajax请求,以根据上次用户活动(上次用户打开页面的时间)检查新消息。

如果有通知,我将页面标题更改为(1) page title。 它工作正常,但仅适用于1个标签。 我想在所有打开的标签中显示(1)

jquery:

$(document).ready(function(){

var i = "0";

setInterval(function() {

    $.ajax({
      url: '/js/alerts.php',
      dataType: 'json',
      type: 'POST',
      success: function(data){
       if( data.number > "0" ) {

    i = parseInt(i) + parseInt(data.number);

    document.title = document.title.replace(/\(\d+\)\s+/, "");
    document.title='('+i+')' + " " + document.title;

       }
      },
    });

 }, 14000);
});

这将检查是否有通知,如果有,请更改页面标题。

php和mysql:(alerts.php)

$p_opendate = $_SESSION["page_open_date"]; // get last page open date

mysql

select count(c.user) as logs from chat c 
where c.message_to = 'user' and c.data > $p_opendate

if($num>0) // $number of new messages
$_SESSION["page_open_date"] = date ("ymdHis"); //update session

我在实际项目中使用准备好的语句。

此选择将在打开页面后(或在检索到的最后数据> 0之后)返回新消息的数量。

问题是如果用户打开了许多浏览器选项卡,我想在所有标题中显示(1),而不仅仅是其中一个。有什么想法吗?

这可以在php,mysql或jquery中解决吗?

1 个答案:

答案 0 :(得分:2)

setInterval()函数仅可用于一页吗?如果是,请将其设置为全局函数,以便所有打开的页面都可以进行相同的调用并更新标题。

如果它是SPA,即使用户已经打开了许多选项卡,则setInterval()函数将在所有页面中可用。因此,您无需执行其他任何操作。 setInterval()函数将在指定时间在所有页面中触发。