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

Danilo Lavieri

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Tite acerta ao chamar estrelas olímpicas, mas insiste com Gabigol e Everton

Tite em entrevista coletiva para divulgar os convocados da Seleção Brasileira - Reprodução/Youtube
Tite em entrevista coletiva para divulgar os convocados da Seleção Brasileira Imagem: Reprodução/Youtube

Colunista do UOL

13/08/2021 11h22

Receba os novos posts desta coluna no seu e-mail

Email inválido

A lista anunciada hoje (13) por Tite para a próxima rodada das Eliminatórias teve um grande acerto do treinador ao valorizar a medalha de ouro conquistada pela seleção brasileira em Tóquio-2020. Seis atletas que estiveram no Japão foram convocados para a lista atual, o que reforça a conexão entre as comissões técnicas e faz ter sentido a briga dos atletas com seus clubes pela liberação.

Bruno Guimarães, Guilherme Arana, Claudinho e Matheus Cunha foram os jovens que estiveram na lista, assim como Daniel Alves e Richarlison, que já frequentaram mais vezes a seleção principal, mas também foram fundamentais na conquista do bicampeonato olímpico.

A convocação foi feita de olho na rodada tripla de Eliminatórias da Copa do Mundo. O Brasil enfrenta o Chile, no dia 2, fora de casa, e a Argentina e o Peru, nos dias 5 e 9, como mandante, em São Paulo e em Recife, respectivamente.

Chama a atenção também que o comandante ainda mantém a fé em Everton Ribeiro e Gabigol, que não tiveram muito destaque no vice da Copa América conquistado pouco antes das Olimpíadas. O meio-campista tem a confiança de Tite pelo o que já mostrou no ado, ma está longe de viver o seu melhor momento. Já o atacante venceu a desconfiança inicial por conta de comportamento, mas ainda precisa provar que merece espaço em campo no aspecto técnico.

Por fim, Lucas Paquetá, o nome que mais deu certo ao fazer dupla com Neymar na mesma competição, também está mantido na lista, como já era esperado.

Douglas Luiz, que esteve na Copa América, mas quase não entrou, foi retirado da lista mesmo tendo ido ao Japão. Já Vinicius Junior, outro que foi mal na competição entre seleções, também perdeu espaço.

Confira os convocados:

Goleiros:

Alisson (Liverpool - ING)
Ederson (Manchester City - ING)
Weverton (Palmeiras - BRA)

Laterais:

Daniel Alves (São Paulo - BRA)
Danilo (Juventus - ITA)
Alex Sandro (Juventus - ITA)
Guilherme Arana (Atlético-MG - BRA)

Zagueiros:

Éder Militão (Real Madrid - ESP)
Lucas Veríssimo (Benfica - POR)
Marquinhos (Paris Saint-Germain - FRA)
Thiago Silva (Chelsea - ING)

Meio-campistas:

Bruno Guimarães (Lyon - FRA)
Casemiro (Real Madrid - ESP)
Claudinho (Zenit - RUS)
Everton Ribeiro (Flamengo - BRA)
Fabinho (Liverpool - ING)
Fred (Manchester United - ING)
Lucas Paquetá (Lyon - FRA)

Atacantes:

Firmino (Liverpool - ING)
Gabriel Barbosa (Flamengo - BRA)
Gabriel Jesus (Manchester City - ING)
Matheus Cunha (Hertha Berlim - ALE)
Neymar (Paris Saint-Germain - FRA)
Raphinha (Leeds United - ING)
Richarlison (Everton - ING)

Siga também as opiniões de Danilo Lavieri no Twitter e no Instagram