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

Tite não vai trabalhar no Brasil e descartará qualquer proposta em 2023

Do UOL, em São Paulo (SP)

24/02/2023 15h43

O técnico Tite não vai trabalhar no futebol brasileiro neste ano. Após deixar a seleção brasileira, o treinador está disposto a rejeitar qualquer proposta do Brasil.

A ideia do técnico é priorizar o mercado europeu e tirar um ano sabático em relação ao mercado nacional.

A preferência do treinador é por um clube da Itália, Espanha ou Portugal, países em que ele domina o idioma e não teria problema de comunicação.

'O interesse do Tite é trabalhar na Europa se tiver proposta. A decisão, neste momento, é que o Tite não trabalhará no Brasil neste ano', PVC durante o programa De Primeira.

O UOL apurou que Tite recebeu uma proposta para comandar a seleção da Coreia do Sul, além de uma sondagem da Federação de Futebol do Equador. Tite recusou ambas as investidas.

A informação foi revelada pelo colunista do UOL Paulo Vinicius Coelho, o PVC, no programa De Primeira, que vai ao ar de segunda à sexta, às 15 horas, no canal do UOL Esporte no YouTube.

Marcelo volta ao Flu

Depois de 16 anos, Marcelo está de volta ao Fluminense. A notícia pegou os torcedores de surpresa e foi um segredo guardado por meses dentro do clube para a negociação não ter problemas. A repórter Luiza Sá traz bastidores da negociação.

Andrey Santos: Vasco é o favorito após desistência do Palmeiras

Após a desistência do Palmeiras, o Vasco tornou-se o favorito para Andrey atuar antes de se transferir em definitivo para o Chelsea. O repórtyer Bruno Braz fala sobre as negociações entre cariocas e ingleses.

CBF limita venda de mando de campo em torneios nacionais

O colunista do UOL Esporte Rodrigo Mattos diz que no atual regulamento de 2023, a CBF acrescentou um parágrafo no artigo 14 para deixar claro que não permitirá que um time tenha ganho comercial em prejuízo do equilíbrio técnico da competição.

São Paulo trata Galoppo como inegociável

O colunista do UOL Esporte André Hernan atualiza a situação do argentino no Tricolor

"A ideia é manter Galoppo para que ele tenha boas atuações e conquistas antes de pensar em uma negociação."

Jean Pyerre não trata parada como aposentadoria

De acordo com o repórter Marinho Saldanha, a para não se trata de uma aposentadoria do meia.
"Ficou um clima ruim no Grêmio, ele foi afastado no clube que o formou, e isso conmtribuiu com esse quadro de depressão"


Assista ao De Primeira na íntegra