Оператор If в функции setInterval

#javascript #setinterval #google-tag-manager

#javascript #setinterval #google-менеджер тегов

Вопрос:

У меня есть следующий код. Чего я пытаюсь добиться, так это подсчитать секунды, в которых {{UTL — видимость скрыта}} == true, когда оно равно false. {{UTL — видимость скрыта}} — это макрос, который определяет, открыта ли вкладка браузера, поэтому он проверяет каждую секунду и добавляет секунду к общей сумме времени включения или выключения.

Однако, когда я запускаю это, оно принимает состояние при загрузке страницы и не проверяет каждую секунду и не изменяет оператор if. Я предполагаю, что каждую секунду функция будет выполняться, оценивать, является ли {{UTL — Visibility hidden}} == false, и запускать соответствующий раздел.

У меня неправильный порядок? Есть ли более эффективный способ сделать это?

 x=0
y=0
setInterval(function () {
  if({{UTL - Visibility hidden}} == false){
    dataLayer.push({
        'event' : 'Timer test',
      'time on' : x
       }); 
  x=x 1
}
else{
    dataLayer.push({
         'event' : 'Timer test',
      'time off' : y
      }); 
  y=y 1  
}}

  , 1000);
  

Макрос генерируется в диспетчере тегов Google из следующего javascript:

UTL — скрытая видимость

     function() {
      switch ({{UTL - Visibility prefix}}) {
        case '':
          return document['hidden'];
        case 'moz':
          return document['mozHidden'];
        case 'o':
          return document['oHidden'];
        case 'webkit':
          return document['webkitHidden'];
        default:
          return;
      }
    }
  

UTL — префикс видимости

 function() {
  var prefixes = ['moz', 'ms', 'o', 'webkit'];

  if ('hidden' in document) {
    return '';
  }

  // Loop through each prefix to see if it is supported.
  for (var i = 0; i < prefixes.length; i  ) {
    var testPrefix = prefixes[i]   'Hidden';
    if (testPrefix in document) {
      return prefixes[i];
    }
  }

  return;
}
  

Комментарии:

1. Откуда берется этот макрос …? Где / что / когда оценивает это?

2. Если это буквально содержимое макросов, то сгенерированный код является if( function() { ... } == false ) . Вы сравниваете определение функции с false вместо того, чтобы вызывать ее и сравнивать возвращаемое значение. Возможно if(({{UTL - Visibility hidden}})() == false) ? Это помогло бы, если бы вы могли показать сгенерированный JS.