如何检查JQuery是否在另一个窗口中运行?

时间:2018-06-28 06:56:05

标签: javascript jquery ajax

我有一个脚本,当用户在线时需要执行很多操作。

script.js:

function myFunction() {
    myVar = setInterval(online, 10000);
}

function online() {
        $.ajax({
        url: "/php/online.php",
        type: 'post'
        });
    });
}

此PHP可以完成许多工作,而我每10秒只需要做一次。问题是,如果用户打开许多浏览器选项卡或窗口,则此脚本将运行多次。我只希望它在一个窗口中运行一次,但始终运行它。 有任何想法吗?如果可能的话,简单的。

1 个答案:

答案 0 :(得分:1)

每次发出请求时,您都可以将一个项目设置为与当前时间戳相对应的localStorage,并检查localStorage和现在之间的时间差至少为10秒,然后再发送要求:

function myFunction() {
  myVar = setInterval(online, 10000);
}

function online() {
  const now = Date.now();
  if (localStorage.lastPing && now - Number(localStorage.lastPing) < 10000) return;
  localStorage.lastPing = now;
  $.ajax({
    url: "/php/online.php",
    type: 'post'
  });
}