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

5 jogadores brasileiros que ainda podem mudar de clube no futebol europeu

Diego Carlos, do Sevilla, comemora com o troféu da Liga Europa -  Lars Baron/Pool via REUTERS
Diego Carlos, do Sevilla, comemora com o troféu da Liga Europa Imagem: Lars Baron/Pool via REUTERS

Do UOL, em São Paulo (SP)

19/09/2020 04h00

Alguns campeonato nacionais já começaram, mas os clubes do futebol europeu ainda se movimentam no mercado da bola para fazer suas últimas contratações. Existem brasileiros que podem mudar de equipe nesta janela de transferência. O UOL Esporte listou alguns nomes que podem se transferir.

Juan Jesus

Juan Jesus, zagueiro da Roma - Clive Brunskill/Getty Images - Clive Brunskill/Getty Images
Imagem: Clive Brunskill/Getty Images

Jornais portugueses publicaram o interesse do Porto na contratação do zagueiro Juan Jesus, que atualmente é jogador da Roma. Em entrevista à rádio portuguesa Antena 1, ele desconheceu o interesse do time português, mas não descartou uma transferência.

Norberto Neto

Neto - Divulgação/Barcelona - Divulgação/Barcelona
Imagem: Divulgação/Barcelona

O nome do goleiro brasileiro foi citado pela imprensa italiana como um possível alvo do Milan. A equipe rossonera negociou o espanhol Pepe Reina e não tem um substituto imediato para Ginaluiggi Donnarumma. Em primeira instância, o Barcelona não viu o negócio com bons olhos, já que Ter Stegen se recupera de uma cirurgia no tendão patelar do joelho direito.

Alex Telles

Alex Telles Porto - Miguel Riopa/AFP - Miguel Riopa/AFP
Imagem: Miguel Riopa/AFP

Os jornais ingleses afirmam que o lateral esquerdo brasileiro virou uma das prioridades para o Manchester United. De acordo com a imprensa internacional, o Porto pede 20 milhões de euros (cerca de R$ 127,6 milhões) pela transferência do defensor.

Iago Amaral

Iago - Divulgação/Augsburg - Divulgação/Augsburg
Imagem: Divulgação/Augsburg

Ex-jogador do Internacional, o lateral esquerdo Iago recebeu uma sondagem do Milan. Atualmente, o jogador de 23 anos é titular no Augsburg, da Alemanha. Caso seja negociado, o Colorado tem direito a um percentual do valor referente ao mecanismo de solidariedade da Fifa — por ter atuado entre 2013 até 2019, renderia aos gaúchos 3,5% de uma futura venda.

Diego Carlos

Diego Carlos - Alexander Hassenstein - UEFA/UEFA via Getty Images - Alexander Hassenstein - UEFA/UEFA via Getty Images
Diego Carlos comemora o gol decisivo da final da Liga Europa
Imagem: Alexander Hassenstein - UEFA/UEFA via Getty Images

O zagueiro brasileiro é um dos nomes mais cobiçados no mercado da bola. Ele obteve muito destaque no Sevilla na temporada ada e chamou a atenção do Manchester City, Liverpool e Manchester United. Sua multa rescisória está estipulada em 75 milhões de euros (cerca de R$ 478,7 milhões na cotação atual) — valor que o colocaria entre os três zagueiros mais caros da história do futebol.