;(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 ensaia três mudanças; Matheus Cunha treina no lugar de Gabriel Jesus

Matheus Cunha durante o treino de hoje (14) da seleção brasileira na Academia de Futebol - Lucas Figueiredo/CBF
Matheus Cunha durante o treino de hoje (14) da seleção brasileira na Academia de Futebol Imagem: Lucas Figueiredo/CBF

Gabriel Carneiro

Do UOL, em São Paulo

14/11/2021 17h14

O treinamento de hoje (14) da seleção brasileira mostrou três mudanças na escalação em relação ao jogo da última quinta-feira, contra a Colômbia. Além de Fabinho na vaga do suspenso Casemiro, Tite também escalou Éder Militão na vaga de Thiago Silva e Matheus Cunha no lugar de Gabriel Jesus.

Ainda há mais um treinamento agendado antes do jogo de terça-feira (16), às 20h30 (de Brasília), contra a Argentina, pela 14ª rodada das Eliminatórias da Copa do Mundo do Qatar, o que significa que Tite pode testar novas alternativas de escalação. A atividade será de novo na Academia de Futebol do Palmeiras, em São Paulo.

Fabinho na vaga de Casemiro é uma substituição natural, porque o volante do Liverpool é sempre escalado quando o do Real Madrid está suspenso ou lesionado. Já as outras duas mexidas partem de opções técnicas e a que mais chama atenção é a saída de Gabriel Jesus, que não faz um gol pela seleção há 16 partidas e pode ter perdido lugar no time.

Alisson; Danilo, Marquinhos, Éder Militão e Alex Sandro; Fabinho e Fred; Raphinha, Matheus Cunha, Neymar e Lucas Paquetá é uma escalação possível para o clássico de terça-feira.

Jesus - Lucas Figueiredo/CBF - Lucas Figueiredo/CBF
Gabriel Jesus marcou pela última vez pela seleção em julho de 2019
Imagem: Lucas Figueiredo/CBF

O treino de hoje contou com o volante Edenilson, do Internacional. Ele foi convocado para o lugar de Casemiro, suspenso, e se juntou ao grupo na hora do almoço. Em recuperação de seu último jogo no Campeonato Brasileiro, sábado, ele participou de apenas uma parte do trabalho no gramado.

Hoje, houve um treinamento físico e em seguida Tite separou 11 titulares para um trabalho tático, com orientações sobre o posicionamento da Argentina. Em seguida houve uma atividade técnica em espaço reduzido, 11 contra 11. Os reservas tiveram o reforço do volante Fabinho, do sub-20 do Palmeiras, e a seguinte escalação: Ederson; Emerson Royal, Thiago Silva, Gabriel Magalhães e Renan Lodi; Fabinho e Gérson; Antony, Gabriel Jesus, Philippe Coutinho e Vinicius Júnior.