首页 > 解决方案 > 如何执行此行一次?

问题描述

我在这里得到了这条线,我真的很努力地执行一次离线部分。

它显示一次,当用户在线时。没关系。但是当用户离线时,它会--- is offline在控制台中每 10 秒显示一次。我只想说is offline用户何时离线,然后停止,直到它再次在线。请帮帮我。

window.setInterval(function() {
  if (document.getElementById('statusIndexer') == null)
    return;
  for (var i = 0; i < WLAPStore.Presence.models.length; i++) {
    var m = WLAPStore.Presence.models[i];
    var id = 'p' + m.id.slice(0, -5);
    var clientBox = document.getElementById(id);
    if (clientBox !== null) {
      var img = clientBox.getElementsByTagName('img')[0];
      img.classList.remove('isOnline');
      if (m.isOnline) {
        console.log(id + ' is online');
        clientBox.parentNode.prepend(clientBox);
        img.classList.remove('isOffline');
        img.classList.add('isOnline');
      } else {
        console.log(id + ' is offline');
        clientBox.parentNode.prepend(clientBox);
        img.classList.remove('isOnline');
        img.classList.add('isOffline');
        (document.getElementById('statusIndexer') == null)
        return;
      }
    }
  }
}, 1000);

标签: javascriptgoogle-chrome-extension

解决方案


使用全局变量来保存以前的状态,并在记录消息之前检查它是否已更改。

var onlineState = {};

window.setInterval(function() {
  if (document.getElementById('statusIndexer') == null)
    return;
  for (var i = 0; i < WLAPStore.Presence.models.length; i++) {
    var m = WLAPStore.Presence.models[i];
    var id = 'p' + m.id.slice(0, -5);
    var clientBox = document.getElementById(id);
    if (clientBox !== null) {
      var img = clientBox.getElementsByTagName('img')[0];
      img.classList.remove('isOnline');
      if (m.isOnline) {
        if (m.isOnline !== onlineState[id]) {
          console.log(id + ' is online');
        }
        clientBox.parentNode.prepend(clientBox);
        img.classList.remove('isOffline');
        img.classList.add('isOnline');
      } else {
        if (m.isOnline !== onlineState[id]) {
          console.log(id + ' is offline');
        }
        clientBox.parentNode.prepend(clientBox);
        img.classList.remove('isOnline');
        img.classList.add('isOffline');
        (document.getElementById('statusIndexer') == null)
        return;
      }
      onlineState[id] = m.isOnline;
    }

  }
}, 1000);


推荐阅读