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

Sem adversário europeu, como é o plano de preparação da seleção para a Copa

O técnico Tite reage durante jogo da seleção brasileira contra o Chile pelas Eliminatórias da Copa do Mundo, no Maracanã - Buda Mendes/Getty Images
O técnico Tite reage durante jogo da seleção brasileira contra o Chile pelas Eliminatórias da Copa do Mundo, no Maracanã Imagem: Buda Mendes/Getty Images

Danilo Lavieri, Gabriel Carneiro e Igor Siqueira

Do UOL, em São Paulo e Rio de Janeiro

20/04/2022 04h00

Classificação e Jogos

A preparação brasileira para a Copa do Mundo envolve não só a escolha dos 23 (ou 26) convocados, mas também o caminho até o Qatar. E como caminho é possível envolver adversários, locais para jogos, treinos e a reta final antes do desembarque em Doha para iniciar, diante da Sérvia, a busca pelo hexa.

Já se sabe que, até o Mundial, não haverá adversários europeus. À medida que novembro se aproxima, é possível ter um cenário mais claro a respeito dos planos da CBF e da comissão técnica de Tite nos os que restam — além da observação in loco dos jogadores.

A próxima convocação em maio será para os jogos, logo no início de junho, contra Coreia do Sul e Japão, nesta ordem, por fim a Argentina. O clássico com os hermanos, por ora, é jogo amistoso que atende à demanda contratual com a Pitch — empresa detentora dos direitos comerciais dos amistosos da seleção. Há uma disputa jurídica na Fifa que, até o momento, mantém em vigor a necessidade de realizar o jogo pendente pelas Eliminatórias. Só que o tempo está acabando. Se o ime não se resolver até junho, pode ser que Brasil e Argentina se enfrentem de novo em setembro — caso a definição das cortes disciplinares da Fifa sigam com essa determinação.

A ideia da comissão técnica é que a apresentação dos jogadores para esse período de jogos em junho seja ainda no fim de maio - com exceção de quem estiver envolvido na final da Liga dos Campeões, agendada para Paris, em 28 de maio. A aclimatação ao fuso horário oriental é importante para o melhor desempenho no período. Quanto antes, melhor.

A rota que a seleção terá, com datas exatas pendentes da confirmação oficial por parte da CBF, prevê o trajeto Seul-Tóquio-Melbourne. Depois do dia 11, quando ocorrerá o terceiro jogo, os convocados que atuam na Europa entram efetivamente de férias.

Em setembro, a depender da briga na Fifa, mais dois amistosos, provavelmente nos Estados Unidos. Os adversários no radar são da Concacaf (Américas Central, do Norte e Caribe). A diretoria de seleções chegou a cogitar um adversário africano, mas há uma dificuldade de conjugar a questão logística com o desejo de fazer o jogo em solo americano.

Olhando para os momentos finais de preparação para o Qatar, a comissão técnica avalia Espanha, Itália ou Inglaterra como base antes de chegar ao palco do Mundial. Estar no Grupo G e estrear em 24 de novembro ajudou nos planos.

Pelo regulamento da Copa, a seleção precisa chegar ao país-sede cinco dias antes da estreia. Logo, em 19 de novembro. Esse cenário permite ao menos cinco dias de preparação na Europa, considerando que as rodadas dos principais campeonatos vão parar em 12 ou 13 de novembro, e os jogadores se apresentariam no dia 14.

A Granja Comary, neste caso, fica fora da rota, já que trazer toda a delegação para Teresópolis seria algo completamente fora de mão. A despedida do CT da seleção foi na data Fifa ada, quando o Brasil se preparou para enfrentar Chile e Bolívia pelas Eliminatórias.