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

Perto do Botafogo, Zahavi é versátil e pode jogar ao lado de Erison

21/06/2022 07h00


O Botafogo tem Erison como um dos destaques da temporada e, por outro lado, vê Eran Zahavi como um dos grandes sonhos de consumo para a próxima janela de transferências. Apesar de serem jogadores da mesma posição, o encaixe de uma possível dupla - já que o israelense está perto de um acerto - não deve ser difícil.

+ Botafogo se aproxima de Eran Zahavi e tem contratação encaminhada

O israelense, apesar dos 34 anos, tem a mobilidade como uma das características marcantes no estilo de jogo. Não é o centroavante fixo, parado dentro da área. Pelo contrário: prefere se mexer para fora da área e abrir espaços aos companheiros.

As ações vão de encontro com Erison, outro atacante que não fica preso dentro da pequena área. Apesar de ser a referência do Botafogo, é comum ver o 'El Toro' recuando para os lados da área na intenção de ajudar e dar e na construção do sistema ofensivo.

Zahavi também atua como segundo atacante - principalmente - ou partindo do lado esquerdo, posições que ele exerceu na última temporada pelo PSV-HOL. Quando o time atuava com Carlos Vinícius, outro centroavante de ofício, geralmente o israelense caía mais pelas pontas ou recuava para que o brasileiro ficasse na referência.

+ Virada épica e aplicação tática: Botafogo faz jogo histórico e aumenta confiança para sequência do ano

Tudo era ainda mais intenso por Israel. Zahavi quase sempre atuava como um segundo atacante, tendo que recuar sempre para fora da área dando e a Shon Weissman ou Munas Dabbur. Vale lembrar que o atacante marcou cinco gols em seis jogos na Nations League de 2020 - ele não atuou na dessa temporada porque se aposentou da seleção.

Mapa de calor de Zahavi (Foto: Reprodução/SofaScore)

O mapa de calor de Zahavi na Nations League (imagem acima) mostra um foco na entrada da área, maior área de atuação do jogador tendo um companheiro de ataque ao lado. Também é possível movimentos perto do círculo central, sempre com um maior eixo partindo do lado esquerdo.

+ VEJA A TABELA DO BRASILEIRÃO

Diferentemente do PSV, Zahavi ou pouco tempo nos lados do tempo, tendo realmente o foco pelo corredor central do gramado. Foram seis participações diretas para gols em seis duelos.

Mapa de calor de Erison (Foto: Reprodução/SofaScore)

Apesar da força física, o mapa de calor de Erison no Brasileirão (imagem acima) também indica movimentações longe da grande área. O camisa 89, diferente de Zahavi, tem uma tendência de entrar mais na área.

Vale ressaltar, contudo, o contexto da amostragem de Erison ser em uma esquema dele ser a referência do ataque - enquanto o de Zahavi estar ao lado de uma dupla.