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

Veiga ouve conselho de Abel no Palmeiras e vive ano histórico na carreira

Raphael Veiga comemora um dos gols que marcou pelo Palmeiras contra o Fluminense - Bruno Ulivieri/AGIF
Raphael Veiga comemora um dos gols que marcou pelo Palmeiras contra o Fluminense Imagem: Bruno Ulivieri/AGIF

Thiago Ferri

Do UOL, em São Paulo

16/11/2020 04h00

Raphael Veiga chegou no sábado (14) a 11 gols em 32 jogos na temporada pelo Palmeiras e vive em 2020 o ano com mais tentos de sua carreira. Antes, a melhor marca havia sido obtida em 2018, ao balançar as redes nove vezes em 48 partidas pelo Athletico-PR. Em alta, o camisa 23 é um dos destaques na série de oito vitórias seguidas do Verdão.

A posição de meia no Palmeiras é um problema antigo, e Veiga tem conseguido uma sequência rara — são 18 partidas consecutivas, sendo titular em 15 e reserva em apenas três. A principal vantagem para os outros jogadores do setor é a capacidade de entrar na área para finalizar.

Sob o comando de Abel Ferreira, o jogador fez três gols nos últimos dois jogos. Após decidir a vitória sobre o Fluminense com os dois gols do triunfo por 2 a 0, Raphael Veiga teve uma conversa com o técnico ainda no campo.

"O Raphael Veiga tem muita qualidade, é robusto e nos dá capacidade ofensiva e defensiva, também. Ele só tem de se lembrar todos os dias o que o trouxe. Ser consistente. Ele tem o trabalho de equipe, o talento, precisa ser consistente. É só manter isso. Se eu o mantiver consistente, ele é esse jogador", afirmou o técnico.

"Este é o maior desafio, manter o mais difícil no futebol. Acredito que é o desafio que o lancei depois do jogo. O ser humano, por norma, é muito fácil relaxar. E é aí que faz a diferença, manter a rédea curta para ele, para mim, para os jogadores e nos lembrar o que nos trouxe aqui. Trabalho de equipe, talento dos jogadores e agora ser consistente", completou.

Hoje peça importante, Raphael Veiga chegou a correr o risco de não estar no Palmeiras em 2020. O clube negociava sua venda ao Grêmio, no fim da temporada ada, mas Vanderlei Luxemburgo pediu sua permanência. O desempenho com o ex-técnico, porém, foi irregular.

Desde 2017 no Palmeiras, Veiga fez mais da metade dos gols pelo clube nesta temporada. Além dos 11 de 2020, foram mais cinco em 31 partidas no ano ado, e outros dois em 22 apresentações em 2017. Ele só ficou fora em 2018, quando estava emprestado ao Furacão.

Palmeiras