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

Botafogo

Dedé se diz 'pronto para jogar' e explica situação com o Botafogo

Zagueiro está sem clube desde que deixou o Cruzeiro e afirmou estar preparado para voltar a atuar - Vinnicius Silva/Cruzeiro
Zagueiro está sem clube desde que deixou o Cruzeiro e afirmou estar preparado para voltar a atuar Imagem: Vinnicius Silva/Cruzeiro

28/12/2021 19h50

As chances de Dedé vestir a camisa do Botafogo, no momento, são pequenas. Pelo menos foi o que o próprio zagueiro garantiu na chegada do Jogo das Estrelas, evento organizado por Zico, realizado nesta terça-feira no Estádio Luso-Brasileiro, na Ilha do Governador.

"(A negociação) Não está em pé nenhum! Não foi exame não, foi só uma conversa com o departamento médico mesmo, não foi exame feito pelos médicos sobre mim, não", explicou.

Dedé, vale lembrar, foi um nome que entrou em pauta no Botafogo. O clube, contudo, quer ter certeza que o zagueiro, que não atua desde 2019, está bem fisicamente e, por isso, realizou uma série de testes físicos com ele.

O zagueiro afirmou que ainda não sabe onde vai atuar na temporada 2022, sem ter algo concreto. Enquanto isso, ele mantém a forma física no Volta Redonda, clube que o revelou.

"Ainda não tenho definição de clube. Estou treinando muito forte no Volta Redonda, graças a Deus estou 100%, normal, treinando da forma como sempre trabalhei. Como não tem definição, espero, onde eu estiver, ajudar qualquer clube que futuramente há de fechar", afirmou.

O jogador conviveu com lesões nos últimos dois anos, mas garante que isso são águas adas. Dedé, inclusive, já fez jogos de baixa intensidade pelo Voltaço e se sente pronto para retornar aos gramados.

"Pronto eu já estou para jogar. Tenho feito amistosos para jogar, claro que em nível abaixo, mas ainda não tenho definição de clube. Não estou ansioso para fechar não, vivo meu dia... Como estou treinando no Volta Redonda penso como se eu fosse jogador. Meus empresários receberam algumas sondagens de clubes e estamos vendo", detalhou.

"Fiquei na luta para voltar, aquele embolo com o Cruzeiro... Agora estou de volta. Importante é estar aqui, participando desse evento maravilhoso que o Zico sempre faz para ajudar muitas pessoas. Não podia deixar estar aqui depois de receber esse convite", vibrou.

Botafogo