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

Mercado da bola: Pedro entra em lista do Sevilla, e PSG contrata meia

TV espanhol afirmou que Pedro, atacante do Flamengo, despertou o interesse do futebol espanhol - Heuler Andrey/Getty Images
TV espanhol afirmou que Pedro, atacante do Flamengo, despertou o interesse do futebol espanhol Imagem: Heuler Andrey/Getty Images

Do UOL, em São Paulo

30/08/2022 19h47

Mesmo com a janela brasileira fechada, o mercado da bola do futebol continua agitado, com especulações e desfechos em meio aos últimos dias de negociações entre os clubes europeus.

Veja as principais notícias da bola de hoje:

Pedro vira alvo do Sevilla

O atacante Pedro, do Flamengo, está na lista de reforços do Sevilla no mercado da bola. A informação é do programa 'El Chiringuito TV'. De acordo com o noticiário, o clube europeu está atrás de reforços após começar muito mal o Campeonato Espanhol — em nove pontos disputados conquistou apenas um, e ocupa a 15ª posição.

Pedro, por outro lado, vive um momento muito bom no Rubro-negro. Na atual temporada, o atacante atuou em 48 partidas, marcou 20 gols e deu 6 assistências. Em março, o Flamengo recusou uma proposta do Palmeiras de 20 milhões de euros (R$ 110 milhões na época) por 80% do atleta.

PSG anuncia meio-campista

PSG anuncia Fabián Ruiz com contrato até 2027 - Divulgação/PSG - Divulgação/PSG
Imagem: Divulgação/PSG

O meio-campista espanhol Fabián Ruiz, que até agora estava no Napoli, assinou contrato de cinco anos com o Paris Saint-Germain, anunciou hoje o clube francês. O atleta de 26 anos é o quinto reforço dos ses nesta janela de transferências, depois das chegadas de Vitinha, Renato Sanches, Hugo Ekitike e Nordi Mukiele.

Ruiz chega para ocupar uma posição na qual a equipe fez muitas mudanças com as saídas do holandês Giorginio Wignaldum (Roma), do espanhol Ander Herrera (Athletic Bilbao) e Eric Junior Dina Ebimbe (Eintracht Frankfurt).

Antony acerta com o United...

Manchester United e Ajax anunciaram na manhã de hoje um acordo pela contratação de Antony por parte do clube de inglês. De acordo com as equipes, uma oferta de 95 milhões de euros (R$ 477,7 milhões na cotação atual) foi aceita pelos holandeses. O valor ainda pode chegar a 100 milhões de euros (R$ 502,8 milhões) com bônus inclusos.

Agora, para anunciar o jogador oficialmente, o Manchester United depende apenas da aprovação de Antony nos exames médicos. O atacante de 22 anos tinha contrato com o Ajax até junho de 2025.

... e irrita técnico do Ajax

Antony, do Ajax, comemora gol marcado diante do Sporting na Champions League - Kenzo Tribouillard / AFP - Kenzo Tribouillard / AFP
Imagem: Kenzo Tribouillard / AFP

Alfred Schreuder, técnico do Ajax, criticou a postura de Antony dias antes de deixar o clube holandês com destino ao Manchester United. Em entrevista ao canal "Ziggo Sport", o comandante reclamou da falta de profissionalismo do brasileiro.

"Se você está desapontado por dois ou três dias, eu entendo, mas você tem que ser profissional em algum ponto. Eu disse: 'Vou continuar com os caras que estão lá'. Em certa altura, você fica bravo com isso. O que estamos fazendo? Olhando o quadro geral, isso o frustra como treinador, mas também como você se posiciona no mundo. Eu pensei: 'Você é só um jogador'. Mas meu sentimento é de que isso é ruim", disse.