;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Ricardo Feltrin

REPORTAGEM

"JN" lidera, mas perde ibope em SP; "Gênesis" cresce no horário

William Bonner e Renata Vasconcellos na bancada do "Jornal Nacional", da Globo                              - reprodução
William Bonner e Renata Vasconcellos na bancada do "Jornal Nacional", da Globo Imagem: reprodução

Colunista do UOL

22/05/2021 00h09

Após um ano de pandemia, o cansaço do telespectador com noticiários já pode ser observado a partir da audiência do principal telejornal do país —o "Jornal Nacional"—, e justamente no principal mercado da publicidade: São Paulo.

Dados exclusivos de audiência obtidos pela coluna mostram que em março e abril do ano ado, no início da pandemia, o "JN" registrou em São Paulo médias de 33,9 pontos e 31,9 pontos de audiência, respectivamente.

Cada ponto nessa medição regional equivale a cerca de 76,5 mil domicílios sintonizados.

Um ano depois, no mesmo bimestre, o "JN" fechou março com 29,6 pontos e abril com 27,4. Em maio, a queda aparentemente continua: 26,6 pontos até o momento.

Na média anual a queda do "JN" já é de 12% (31,6 em 2020, e 27,8 pontos até agora).

Sim, o JN" continua líder absoluto de audiência, tanto no país como em São Paulo, mas pela primeira vez em muito tempo apresenta um viés de queda acentuado.

JN x JR e Gênesis

Além do possível enfado do telespectador (paulista e paulistano) com assuntos tão recorrentes (embora vitais) como a pandemia de coronavírus e uma crise política e econômica que parece não ter fim, há outras "forças" na concorrência contra o telejornal global.

A Record está colocando no mesmo horário do "JN" dois produtos distintos: o "Jornal da Record" e a novela "Gênesis". A estratégia está dando certo.

Os dois produtos estão registrando dois dígitos no ibope. O "JR" está dando 10 pontos de média; "Gênesis", 13 pontos. No horário anterior a "Gênesis" a Record registrava meros 8 pontos.

Com essas duas produções a emissora da Barra Funda teve um acréscimo de ibope de quase 46% (ou de 7,8 pontos para 11 pontos).

No mesmo horário, porém, para comparação, o SBT desabou de 9,1 pontos para 6,6 pontos.

Todos os dados desta coluna foram obtidos junto a fontes nas emissoras. A Kantar Ibope Media, que faz a medição, não pode, por questões contratuais, divulgar essas informações à imprensa.

Veja agora mês a mês, desde janeiro de 2020, a audiência média do "Jornal Nacional"

Dados do JN na Grande São Paulo
Em pontos de ibope e share (%)

2020

janeiro - 29,8 pontos e 44,5% de share
fevereiro - 30,5 e 43,7%
março - 33,9 e 45,8%
abril - 31,9 e 43,1%
maio - 31,9 e 44,4%
junho - 30,4 e 44,0%
julho - 30,3 e 43,7%
agosto - 31,6 e 44,2%
setembro - 31,1 e 43,8%
outubro - 29,2 e 42,0%
novembro - 28,9 e 40.9%
dezembro - 25,6 e 40,4%

Média de 2020 - 30,5 pontos e 43,4% de "share"

2021

janeiro - 26,6 e 39,2%
fevereiro - 28,3 e 40,5%
março - 29,6 e 41,6%
abril - 27,4 e 39,3%
maio* - 26,6 e 38,1%

*maio até dia 20

Média 2021 (maio até dia 20) - 27,8 pontos e 39,9% de "share"

** Fonte: Dados da Kantar Ibope Media, obtidos pela coluna de forma independente

Ricardo Feltrin no Twitter, Facebook, Instagram e site Ooops