#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.