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

Palmeiras

Dudu ite incômodo com declaração de Crespo: 'Leva para o coração'

Dudu responde declaração de Crespo após classificação do Palmeiras - Reprodução/Band
Dudu responde declaração de Crespo após classificação do Palmeiras Imagem: Reprodução/Band

Colaboração para o UOL, em São Paulo

18/08/2021 12h47

O atacante Dudu, do Palmeiras, itiu incômodo com a declaração de Crespo dada após o empate por 1 a 1 na partida de ida pelas quartas de final da Libertadores. Na ocasião, Crespo disse que estava confiante que o São Paulo seria capaz de "fazer história" no Allianz Parque. O Tricolor precisava da vitória ou empate com pelo menos dois gols para cada lado para avançar na competição.

Em entrevista ao programa "Jogo Aberto", Dudu, que foi um dos destaques da vitória alviverde por 3 a 0, disse que o time "levou isso para o coração". Além dele, Felipe Melo também rebateu a fala de Crespo.

"A gente sabe que no fundo dá uma: 'Pô, o cara fala que vai fazer história no nosso estádio'. Isso não pode acontecer. A gente leva isso para o coração, mas a gente também sabe que é um jeito de motivar o time dele. Como a gente fala no jogo: 'Eles só não podem ter mais vontade que a gente'. A gente sabe que quem tinha que fazer história era a gente. (...) Se a gente força, acho que poderia ter sido um pouco mais, mas está bom. A gente fez um grande jogo", disse Dudu.

Além disso, o atacante destacou a boa partida alviverde e explicou a estratégia do time de Abel Ferreira.

"Começou lá no primeiro jogo. A gente sabia que tinham todas essas marcas, mas eu acho que é o que o Abel falou para gente: a história era aqui e agora. Não importava o que ou. A gente foi lá no primeiro jogo sabendo que o São Paulo é muito forte lá. A gente tinha que fazer um grande resultado lá, e a Libertadores quando você joga a primeira fora de casa, empatar com gol é um resultado muito bom. A gente sabe da nossa força dentro de casa, da força que a gente tem para contra-atacar os adversários. A gente sabia que o São Paulo tinha que sair para buscar o resultado. A gente tinha o objetivo de marcar muito forte e sair no contra-ataque. A gente treinou bastante isso e fomos felizes", completou.

Dudu ainda pregou cautela quanto a sequência da Libertadores, e disse que o foco do clube agora é a recuperação no Campeonato Brasileiro.

"É manter os pés no chão, porque a gente sabe que teremos dois jogos muito difíceis, seja o River ou o Atlético. A gente está focado em buscar mais um título da Libertadores. A gente espera que possa estar bem nesses dois jogos, mas isso é coisa para pensar só lá na frente, porque a gente tem agora o Cuiabá, que vai ser um jogo muito difícil, num horário diferente. A gente precisa se recuperar (no Brasileirão)", concluiu.

Palmeiras