;(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: Corinthians anuncia Willian, e Real desiste de Mbappé

Willian segura a camisa do Corinthians - Reprodução/Meu Timão
Willian segura a camisa do Corinthians Imagem: Reprodução/Meu Timão

Do UOL, em São Paulo

30/08/2021 13h28

O mercado da bola teve grandes desfechos no futebol brasileiro no último dia da janela para transferências de atletas vindos da Europa. Willian foi anunciado pelo Corinthians, enquanto Jonathan Calleri acertou a volta ao São Paulo

No futebol europeu, a novela envolvendo Real Madrid, PSG e Mbappé parece ter chegado o fim sem um desfecho feliz para o clube espanhol. O UOL Esporte destaca as principais notícias do dia no mercado da bola.

Willian volta ao Corinthians

O meia-atacante Willian foi anunciado como reforço do Corinthians. Hoje (30) pela tarde, o Arsenal divulgou a rescisão contratual e deu a notícia de que o jogador voltaria ao clube do Parque São Jorge.

"Estou muito feliz, será um prazer imenso voltar a vestir essa camisa. Quero agradecer a você pelo esforço imenso, toda a comissão técnica, que tem um carinho por mim. Estou de volta", afirmou o jogador em contato com o presidente Duilio Monteiro Alves.

O anúncio foi marcado por quedas na live entre jogador e o dirigente.

Calleri retorna ao São Paulo após 5 anos

Depois de cinco anos, Jonathan Calleri vai voltar ao São Paulo. O clube paulista acertou um contrato de empréstimo com o atacante até o fim do ano que vem, com uma opção de comprá-lo do Deportivo Maldonado (URU), que detém os direitos econômicos do jogador. O clube paulista espera apenas a confirmação do registro da transferência na Fifa para anunciá-lo. O atacante deve chegar ao Brasil no fim desta semana para ser apresentado oficialmente.

Mais um reforço no Tricolor: Gabriel Neves

O Nacional, do Uruguai, anunciou ter chegado a um acordo com o clube paulista para emprestar o meia Gabriel Neves até o fim do ano que vem. O jogador de 24 anos deve ser anunciado ainda hoje pelo clube paulista, que terá a opção de comprá-lo As conversas com Gabriel Neves foram retomadas nos últimos dias. Em pouco tempo, o São Paulo conseguiu viabilizar o negócio.

Real desiste de Mbappé

Kylian Mbappé não deverá deixar o Paris Saint-Germain nesta janela de transferências. Pelo menos é o que garante a imprensa sa nesta segunda-feira. Após fazer nova proposta e dar um prazo para o clube de Paris, o Real Madrid desistiu de ter o atleta nesta janela.

De acordo com informações da rádio "RMC Sports", representantes do clube merengue, que estão em Paris paras as negociações com o PSG, disseram que as tratativas estão interrompidas. Ainda segundo o portal, uma reviravolta não deve ser descartada, mas não é fácil, uma vez que o clube espanhol não está disposto a fazer uma terceira oferta.

Indecisão afeta até camisas

Em meio às negociações entre Real Madrid e Paris Saint-Germain por Mbappé, as lojas oficiais do clube francês não estão vendendo camisas com o nome e o número do atacante.

O jornal As esteve nos pontos do Parque dos Príncipes e dos Campos Elíseos e relatou dificuldade em conseguir uniforme do camisa sete. Quando os jornalistas perguntaram em ambas as lojas sobre as camisas com a grafia do ídolo nacional, os vendedores tiveram dúvidas.

Ainda assim, o fardamento segue sendo vendido para os fãs, embora tenha que ar por um processo de personalização no momento da compra com o nome e número de Mbappé.

Benfica não quer David Luiz

O Benfica desistiu oficialmente de contratar o zagueiro David Luiz, segundo informa o portal português Record. O zagueiro, de 34 anos, está livre no mercado desde que acabou seu contrato com o Arsenal, em junho deste ano.

Ainda segundo o portal, o motivo da desistência é Jorge Jesus. O treinador acredita que o zagueiro não combina com o estilo da equipe e procura um defensor com outra característica.

Inter reforçado com jovens

O Internacional oficializou, hoje (30), a contratação do atacante Gustavo Maia, de 20 anos. O atleta chega por empréstimo até o fim de 2022 cedido pelo Barcelona.

No vínculo oficializado pelo clube gaúcho há cláusula de compra ao fim do período. Gustavo ou por protocolo de realização de exames médicos e de contratos na manhã de hoje no CT Parque Gigante.

No início da tarde de hoje, mais um acordo foi fechado: a Sampdoria oficializou o empréstimo de Kaique Rocha, também de 20 anos, ao clube gaúcho.

Segundo o clube italiano, o jogador foi liberado por dois anos. Kaique iniciou sua carreira no Santos e foi negociado com o clube italiano logo em seguida. Por lá não conseguiu sequência e acabou atuando poucas vezes

Vasco também vai às compras

O Vasco confirmou hoje (30), a contratação do atacante equatoriano Jhon Sánchez. O jogador chega por empréstimo de um ano junto ao Independente del Valle, com opção de compra ao término do contrato.

Sánchez, de 22 anos, é atacante de origem mas já atuou como ala pela direita. O jogador foi campeão da Sul-Americana com o Independente em 2019, marcando, inclusive, um dos gols do time equatoriano na vitória por 3 a 1 sobre o Cólon (ARG) na grande decisão.

Luan de saída do Morumbi?

Um dos destaques do São Paulo na temporada, o volante Luan despertou interesse do futebol europeu. O Porto fez uma sondagem pelo jogador de 22 anos, que tem contrato com a equipe paulista até o fim de 2023.

Há a expectativa de que o interesse do clube português se transforme em uma proposta formal nos próximos dias. Mesmo que a negociação avance, Luan deverá deixar o São Paulo apenas em janeiro.