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

Rafael Reis

OPINIÃO

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

Com corte de Benzema, é difícil não crer em França espancada por 'maldição'

Benzema corre risco de ser cortado da Copa e ampliar "maldição" que atinge França - Reprodução
Benzema corre risco de ser cortado da Copa e ampliar 'maldição' que atinge França Imagem: Reprodução

19/11/2022 17h57Atualizada em 19/11/2022 19h45

Receba os novos posts desta coluna no seu e-mail

Email inválido

Em 2002, com um Zinédine Zidane baleado, a França perdeu até para o estreante Senegal e foi eliminado na primeira fase. Quatro anos depois, o badalado "Quadrado Mágico" brasileiro caiu justamente contra os ses.

Já em 2010, foi a vez da Itália ar vergonha e fica na lanterninha de uma chave que tinha Paraguai, Eslováquia e até a Nova Zelândia. Aqui no Brasil, em 2014, a Espanha também sucumbiu na fase classificatória.

Chegamos a 2018. A Alemanha, tão badalada pelo 7 a 1 aplicado no quadriênio ado, conseguiu aquilo que jamais havia feito antes na sua história: deixar uma Copa ainda na primeira fase.

Até para os mais céticos, é difícil não acreditar na existência de uma espécie de maldição que atinge as seleções campeãs mundiais na hora de defender seus títulos.

E esse peso extra, carga negativa, inveja de adversários ambiciosos ou o que quer que seja já tem deixado bem claro que não pretende dar refresco para a França, seu alvo natural da vez.

O técnico Didier Deschamps, que já havia perdido o goleiro Mike Maignan, o zagueiro Presnel Kimpembe, os meias N'Golo Kanté e Paul Pogba, além do meia-atacante Christopher Nkunku, teve neste sábado uma das piores notícias que poderia receber.

Karim Benzema, simplesmente o melhor jogador do mundo na temporada por tudo que fez com a camisa do Real Madrid, saiu machucado do seu primeiro treino com bola no Qatar e foi cortado.

Mas, maldição à parte, a ausência do principal centroavante dos "Bleus" não é nenhuma surpresa para quem tem acompanhado a temporada do Real.

Benzema vem convivendo há pelo menos dois meses com problemas musculares na coxa direita, agravadas por uma distensão na região do joelho. Ele já tentou voltar da lesão em duas oportunidades e até foi a campo pelo Real, mas sofreu com recaídas.

O atual vencedor da Bola de Ouro não participou das últimas quatro rodadas do Campeonato Espanhol. E, se não fosse o desejo de disputar a Copa, provavelmente ficaria mais algumas semanas parado.

Mas Benzema ainda não engole o fato de ter perdido a oportunidade de ter sido campeão mundial, quatro anos atrás, por conta do envolvimento no caso de extorsão a Mathieu Valbuena, seu companheiro de seleção.

Por isso, para ele, jogar (e ganhar) no Qatar era uma questão de honra. Uma questão de honra que não sobreviveu à mais forte das maldições existentes na Copa do Mundo.