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

Eliana Alves Cruz

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Corinthians: O silêncio que grita 'gol'!

Cássio foi um dos destaques da vitória do Corinthians contra o Deportivo Cali pela Libertadores 2022 - Ettore Chiereguini/AGIF
Cássio foi um dos destaques da vitória do Corinthians contra o Deportivo Cali pela Libertadores 2022 Imagem: Ettore Chiereguini/AGIF

Do UOL, no Rio de Janeiro

23/04/2022 15h14

Receba os novos posts desta coluna no seu e-mail

Email inválido

"Não podemos mais permanecer imóveis diante de um contexto que ameaça todos os clubes e jogadores. É preciso que a sociedade reflita sobre qual futebol quer para si, para suas famílias, para o presente e para o futuro"

A declaração que abre este texto é do presidente do Corinthians, Duilio Monteiro Alves. Ela veio seguida de um silêncio eloquente em nossos tempos: a mudez das redes sociais e canais virtuais do clube pelo tempo da eternidade de 48 horas, que pegará inclusive um clássico pelo Campeonato Brasileiro contra o Palmeiras. Um ato contra a violência e as fakenews.

Os jogadores Gil, Willian, Cássio, Paulinho e seus familiares receberam ameaças feitas por torcedores. Profissionais de outros clubes também aram pelo mesmo em uma onda de ódio que não poupa ninguém. São alvos de ataques dirigentes, árbitros, jornalistas. Um clima tóxico e contagioso que tem transformado o ambiente do futebol irrespirável em muitos momentos.

Um exemplo foi a agressão no início de abril quando o técnico do Desportiva Ferroviária, Rafael Soriano, agrediu com uma cabeçada a assistente Marcielly Netto. Os fatos recentes apenas provam que o esporte é um espelho de uma sociedade adoecida e que o tema da violência precisa ser encarado e com muita urgência.

Interação é o coração da popularidade neste século 21, ouro em pó que se materializa em patrocínios, anunciantes, prestígio e poder. Desta forma, a decisão do "apagão" nas redes vinda de um dos maiores clubes do país é séria, inesperada, inquietante. Um grito sem articular palavras para protestar contra uma que é preciso estancar agora, pois estamos atrasados. Era preciso ter tomado providências muito antes.

O outro alvo da indignação corintiana, as fake news, é uma espécie de cancro que se multiplica no corpo social deturpando e aviltando a história e os fatos reais, mas também destruindo reputações, carreiras e possibilidades de futuro. Instrumentos criados por covardes para disseminar covardias.

Em sua nota sobre a decisão, o clube diz que "Esta medida visa a conscientizar a fiel torcida e a sociedade em geral a respeito do discurso de ódio, tornando o debate do futebol especialmente tóxico e chegando ao extremo do risco físico e trauma psicológico para os profissionais do esporte - atletas ou não - e suas famílias.

Esta primeira medida do Corinthians será seguida por outras que envolverão todas as diretorias e todo o ecossistema do clube, de forma que imprensa, influenciadores, usuários e empresas de redes sociais também se engajem no necessário debate por um ambiente saudável para a prática, a vivência e a paixão pelo futebol profissional, dentro do espírito esportivo e democrático que guia o Corinthians desde sua fundação."

Que o silêncio corintiano ecoe pelos campos do país e seja mais contundente que um grito emocionado de "gol!".