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

São Paulo

Após recuperação rápida, Arboleda já treina com a seleção do Equador

Arboleda treina no centro de treinamento da seleção do Equador, em Quito - Foto: Federação Equatoriana de Futebol
Arboleda treina no centro de treinamento da seleção do Equador, em Quito Imagem: Foto: Federação Equatoriana de Futebol

Thiago Braga

Do UOL, em São Paulo

06/11/2022 04h00

Classificação e Jogos

Fundamental para o São Paulo, Robert Arboleda está desde o início desta semana no Equador. Após pedido do técnico da seleção equatoriana, Gustavo Alfaro, o Tricolor liberou o zagueiro para viajar ao seu país.

O que pesou para que ele fosse liberado é o sonho de Arboleda de disputar a Copa do Mundo. Aos 31 anos, esta é uma oportunidade que pode não se repetir na carreira do jogador. Assim, o São Paulo não se opôs à liberação.

Arboleda viajou na última segunda-feira (31), para o Equador. O zagueiro terá poucos dias de preparação para ficar apto a ser convocado para disputar a Copa do Mundo neste ano. Um fisioterapeuta da seleção equatoriana acompanhou o zagueiro na última semana durante as atividades no CT do São Paulo.

Após fazer um microciclo de treinamentos em Quito visando a Copa do Mundo, o técnico Gustavo Alfaro convocou 17 jogadores para o amistoso contra o Iraque, dia 12, na Espanha. Arboleda está entre os chamados e agora a expectativa é saber se ele jogará alguns minutos.

Alexander Domínguez, Gilmar Napa, Robert Arboleda, Xavier Arreaga, Byron Castillo, Diego Palacios, Félix Torres, José Cifuentes, Alan Franco, Sebastián González, Romario Ibarra, Ángel Mena, Jhegson Méndez, Kevin Rodríguez, Michael Estrada, Ayrton Preciado e Djorkaeff Reasco completam a relação dos convocados. Esta lista, porém, não indica quem estará na convocação final para o Mundial.

À medida que os campeonatos ao redor do planeta forem sendo paralisados para a Copa, o grupo equatoriano será completado. Se conseguir garantir sua vaga no grupo que vai para o Mundial, Arboleda terá outra batalha.

O Equador terminou as Eliminatórias com Torres e Hincapié como titulares da zaga. Assim, mesmo que vá para a Copa, Arboleda terá de lutar para retomar a titularidade da equipe.

"La Tri", como é carinhosamente apelidada a seleção equatoriana, estreia no Mundial contra o Qatar, no dia 20 de novembro. O Grupo A da competição também conta com Senegal e Holanda.

A última partida oficial de Arboleda aconteceu no dia 23 de junho, pelo duelo de ida das oitavas de final da Copa do Brasil, contra o Palmeiras, no Morumbi. O zagueiro sofreu uma fratura no tornozelo esquerdo e teve rompimento dos ligamentos no local. Um dia após a lesão, ele foi operado e iniciou o processo de recuperação.

Arboleda voltou aos treinos com os companheiros em 21 de outubro. A recuperação é tida como surpreendente no São Paulo. A expectativa inicial era a de que ele voltasse aos gramados somente no ano que vem. Agora Arboleda corre contra o tempo para disputar o Mundial.

São Paulo