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

Julio Gomes

Números do cometa Haaland na Liga dos Campeões assustam

Haaland do Borussia Dortmund durante jogo contra o Brugge pela Liga dos Campeões - Ina Fassbender/AFP
Haaland do Borussia Dortmund durante jogo contra o Brugge pela Liga dos Campeões Imagem: Ina Fassbender/AFP

27/11/2020 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Erling Haaland, o cometa Haaland, está dando medo. Ou prazer. Os as duas coisas misturadas. Que tipo de fenômeno está aparecendo no futebol mundial?

Dá medo pensar onde ele pode chegar. Dá um prazer danado saber que a fila está andando. O bola não para de girar. Hoje, junto com tantos adjetivos, a melhor definição para Haaland é: "o mais desejado da Europa".

No meio de semana, depois de marcar mais dois na vitória do Borussia Dortmund sobre o Brugge, ele chegou a 16 gols em 12 partidas de Liga dos Campeões da Europa. Metade destes jogos foram disputados com a camisa do Red Bull Salzburg, no segundo semestre de 2019 (fase de grupos). A outra metade, já pelo Dortmund, clube que o contratou em janeiro por um preço que cada mais parece risível: 20 milhões de euros.

Para se ter uma ideia, o site Transfermarkt, maior especialista do mundo em valores do mercado da bola, já avalia que Haaland valha 100 milhões de euros - que tal um retorno de cinco vezes o valor investido em menos de um ano?

É claro que o Borussia não pretende vendê-lo. Mas é claro que vai vendê-lo. Porque logo logo vai chegar algum maluco aí da Inglaterra ou da Espanha querendo pagar não 100, mas 200 milhões de euros. Os sites europeus falam muito de Real Madrid, Manchester United e Liverpool como os mais interessados (e capazes) em trazê-lo. Veremos.

Haaland tem só 20 anos de idade, nasceu em Leeds, na Inglaterra, pois seu pai jogava lá na época. Com três anos, ele foi para a Noruega. Aos cinco, começou a jogar bola. Isso tudo aconteceu outro dia, já neste século.

Ele tem 1,94m de altura, o que faz ser ainda mais impressionante a maneira como se movimenta em campo. É muito rápido, muito inteligente, tem desenvoltura e finaliza como se tivesse 10 anos de futebol profissional nas costas.

Sabem quantos gols Messi havia marcado na Champions League após 12 jogos? Dois. E Cristiano Ronaldo, o maior artilheiro da competição? Nenhum. Haaland, vamos lembrar, já marcou 16. Nunca um jogador chegou a esta marca em tão poucos jogos.

Ele superou gente do calibre de Ronaldo Fenômeno, Zinedine Zidane e Miroslav Klose, caras que aram a vida jogando Champions, todos com 14 gols na fase fina da competição. Se fizer mais 6, já estará no top 50. Convenhamos, mais 6 é capaz que ele marque antes do final da fase de grupos...

O Borussia Dortmund lidera sua chave e enfrenta, nas duas próximas semanas, Lazio e Zenit para confirmar a classificação para as oitavas de final. Haaland é o artilheiro do torneio, com seis tentos. Desde que chegou ao clube alemão, em janeiro, ele marcou 33 gols em 31 jogos por todas as competições.

O cometa Haaland está ando diante de nossos olhos. Convém ficar de olho, porque o menino está escrevendo história.