;(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
OPINIÃO

Culpar dança e cabelo pintado por queda do Brasil na Copa é oportunismo

Vini Jr, Raphinha, Lucas Paquetá e Neymar comemoram classificação brasileira - Pablo Porciuncula/AFP
Vini Jr, Raphinha, Lucas Paquetá e Neymar comemoram classificação brasileira Imagem: Pablo Porciuncula/AFP

Do UOL, em Doha (Qatar)

14/12/2022 15h18

Classificação e Jogos

De repente, o que era identificação e reaproximação de sua cultura virou problema. A classificação da Argentina à final da Copa do Mundo intensificou uma onda de críticas que soam como oportunistas para relembrar a eliminação do Brasil. Oportunista no sentido de alguém que aproveita as variáveis do futebol para achar culpados que não existem.

Afinal, o samba no ônibus, a dança para comemorar gols e os cabelos pintados não eram o jeito brasileiro de encarar o futebol? Quem estava imitando o Pombo contra a Coreia do Sul de repente colocou na comemoração a culpa de um jogo com mais de 20 chutes a gol e apenas um atingindo as redes?

Não mandamos Roy Keane, o ex-jogador irlandês, calar a boca quando ele disse que era desrespeito por parte dos atletas dançar a cada gol? Não reforçamos que Vini Jr deveria, sim, bailar a cada vez que fizesse um gol no Real Madrid? Não nos revoltamos com críticas que nada mais eram do que ataques à cultura sem nenhum fundamento prático no esporte?

Se mudar o corte de cabelo fosse decisivo em uma eliminação, como o Brasil foi pentacampeão com Ronaldo com o corte de cascão? Como o Santos de Neymar ganhou diversos títulos levantando a arquibancada com seus moicanos que também dançavam a cada gol?

Falar que a Argentina é diferente neste sentido é ainda pior. Emiliano Martínez pintou o cabelo para a partida de ontem (13) contra a Croácia e ainda dançou na classificação, Messi já platinou seu penteado diversas vezes durante a carreira e nunca parou de jogar bola, sem contar os atletas que cantaram no vestiário provocando o Brasil.

Isso para nem entrar no mérito da carne de ouro. Claro que é uma extravagância desnecessária, algo que não deveria existir em um mundo onde tanta gente a fome. Mas isso está longe de ser um problema apenas do time brasileiro. Até mesmo Messi já frequentou esse restaurante, isso sem nem contar as dezenas de carro de Cristiano Ronaldo, as dezenas de imóveis de tantos outros atletas e tantas outros exageros que existe em qualquer país marcado pelas desigualdades.

Ontem, a Argentina teve uma coisa fundamentalmente diferente do Brasil: a eficiência. O time de Scaloni também começou sem a posse de bola e por uma estratégia acertada não se importou com isso. Foram 30 minutos sem conseguir fazer nada, muito parecido com o time de Tite. Mas aí, no primeiro ataque, um pênalti foi marcado e o rumo da partida foi decidido com o segundo gol de um bate-rebate no ataque.

A Argentina tem muito mérito por não se incomodar com a troca de bola da Croácia no meio-campo. Tem muito mérito por abrir a vantagem e não correr riscos depois de ganhar por 2 a 0. Tem méritos por ter ado à pressão de uma semifinal de Copa. Mas não foi o cabelo, nem a dança e nem a carne de ouro que definiram o finalista.