;(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

SBT celebra dia histórico com Carioca, mas trata futebol com cautela

Reprodução
Imagem: Reprodução

Gabriel Vaquer

Colaboração para o UOL, em Aracaju

17/07/2020 04h00

A final entre Flamengo e Fluminense disputada na última quarta (15) deu uma faca de dois gumes ao SBT. A partida, que liderou na média no Rio de Janeiro e impôs a primeira derrota desde 2015 ao "Jornal Nacional", fez história para o canal de Silvio Santos. Mas uma possível volta do futebol em caráter definitivo é tratada com bastante cautela pela direção da empresa.

A reportagem do UOL Esporte apurou que o SBT está aberto para conversas com clubes que se interessem em exibir partidas na emissora. Mas que prefere jogos finais ou que sejam "oportunidades de mercado", sem que isso cause algum problema jurídico para o canal, como foi o caso da decisão do Campeonato Carioca.

Nesse momento, formar uma equipe esportiva e competir por eventos esportivos não foi cogitado em nenhum momento, até pelos altos valores de competições nacionais - e também pela pandemia do novo coronavírus, que impactou as finanças de todos os canais abertos, já que anunciantes deixaram de investir.

Mas exibições de partidas disponíveis no mercado de campeonatos estaduais e nacionais são algo que anima os diretores. Por isso, alguns diretores estão observando o andamento da Medida Provisória 984, que dá aos clubes mandantes os direitos de transmissão. Essa medida pode ser interessante para que outros clubes se interessem na exposição que o SBT tem a dar.

Além disso, o modelo de negócio que SBT e Flamengo fizeram para a final do Campeonato Carioca foi considerado um sucesso internamente. Mesmo vendendo as cotas de publicidade entre R$ 600 mil e R$ 800 mil, bem abaixo do valor de tabela, a procura comercial foi muito grande, acima até do que a emissora esperava. O SBT vendeu seis cotas nacionais, sendo que colocou cinco inicialmente na praça.

Por fim, o SBT também teve um ótimo de suas afiliadas, que registraram grande audiência e conseguiram bom faturamento. Em Manaus, por exemplo, a TV Norte Amazonas vendeu seis cotas de patrocínio locais em menos de quatro dias. A capital amazonense, inclusive, foi uma das cidades onde o jogo liderou a audiência, além do próprio Rio de Janeiro e de Brasília.

Vale ressaltar que o Flamengo vai oferecer ao SBT a transmissão de um torneio amistoso que deverá ocorrer em Brasília entre o clube Rubro-Negro, o Vasco, o Goiás e o Atlético Goianiense no fim deste mês de julho. Quem está cuidando de tudo é o Fla, que também gostou de ter sua partida exibida na emissora.

Errata: este conteúdo foi atualizado
Ao contrário do que informado anteriormente, próximas transmissões podem acontecer no fim deste mês de julho e não junho. O erro foi corrigido.