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

32 brasileiros já são campeões nacionais na Europa nesta temporada; conheça

Neymar foi campeão francês mais uma vez com o Paris Saint-Germain - Jean-Paul Pelissier/Reuters
Neymar foi campeão francês mais uma vez com o Paris Saint-Germain Imagem: Jean-Paul Pelissier/Reuters

25/06/2020 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

De diferentes formas, 32 jogadores brasileiros já puderam comemorar nesta temporada a conquista de títulos de campeonatos nacionais de primeira divisão no futebol europeu.

A relação inclui apenas atletas que já defendem ou que ainda estão aptos a jogar pela seleção brasileira. Por isso, outros seis nomes que atuam ou atuaram por outros países não fazem parte da lista.

Nesse grupo, estão o meia Thiago Alcântara, campeão alemão pelo Bayern de Munique e presença frequente nas convocações da Espanha, e os atacantes Marlos e Júnior Moraes, vencedores na Ucrânia pelo Shakhtar Donetsk e que hoje vestem a camisa da seleção do leste europeu.

Devido à pandemia do novo coronavírus (Covid-19), nem todos os vencedores desta temporada puderam comemorar dentro de campo suas conquistas.

Neymar, Thiago Silva e Marquinhos, por exemplo, ficaram sabendo em suas casas que o Paris Saint-Germain, então líder da Ligue 1, havia sido declarado campeão francês porque a competição não retornaria para a conclusão da temporada.

O mesmo aconteceu na Bósnia, que entregou a taça para o FK Sarajevo, do meia-atacante Nathan (ex-Metropolitano, de Santa Catarina), após cancelar o terceiro e último turno de sua liga nacional.

David Neres também poderia ter sido campeão nacional com o Ajax, que liderava a Eredivisie quando a pandemia chegou. Mas a Holanda, ao contrário do que fizeram França e Bósnia, preferiu encerrar a temporada sem um campeão.

Mas, para a maioria dos brasileiros, os títulos foram conquistados 100% dentro de campo e em campeonatos que foram (ou estão sendo) disputados até o fim.

Philippe Coutinho e o garoto Oliver Batista Meier se sagraram campeões alemães com o Bayern de Munique na terça-feira da semana ada. No sábado, foi a vez da legião brasileira do Shakhtar Donetsk (12 jogadores e mais dois naturalizados) se sagrar campeã ucraniana.

E ainda há mais jogadores brasileiros na fila para levantar taças até o fim da temporada no Velho Continente.

Na Inglaterra, o Liverpool, de Alisson, Fabinho e Roberto Firmino, está prestes a encerrar um jejum de 30 anos. A Espanha vem tendo uma briga cabeça a cabeça entre Real Madrid (Marcelo, Casemiro, Vinícius Júnior e Rodrygo) e Barcelona (Arthur e Neto), enquanto a Itália deve consagrar novamente a Juventus (Alex Sandro, Danilo e Douglas Costa) ou surpreender com a conquista da Lazio (André Anderson, Luís Felipe e Lucas Leiva).

Jogadores brasileiros campeões na Europa

ALEMANHA: Philippe Coutinho e Oliver Batista Meier (Bayern de Munique)
AZERBAIJÃO: Aílton e Vagner (Qarabag)
BÓSNIA: Nathan (FK Sarajevo)
BULGÁRIA: Cauly, Cicinho, Rafael Forster e Renan (Ludogorets)
ESLOVÁQUIA: Lucas Lovat e Rafael Ratão (Slovan Bratislava)
FRANÇA: Marquinhos, Neymar e Thiago Sillva (Paris Saint-Germain)
HUNGRIA: Isael e Somália (Ferencváros)
MALTA: Diego Silva, Marcelo Dias, Tiago Adan e Walmerson (Floriana)
UCRÂNIA: Alan Patrick, Dentinho, Dodô, Fernando, Marquinhos Cipriano, Marcos Antônio, Maycon, Ismaily, Taison, Tetê, Vitão e Wellington Nem (Shakhtar Donetsk)