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

Rendimento do Botafogo em meio à transição põe paciência da torcida à prova

Torcida do Botafogo no Nilton Santos - Vitor Silva / Botafogo
Torcida do Botafogo no Nilton Santos Imagem: Vitor Silva / Botafogo

Do UOL, no Rio de Janeiro (RJ)

01/03/2022 04h00Atualizada em 01/03/2022 16h24

Em meio à instabilidade pela qual o time a, o técnico interino Lucio Flávio busca concretizar a missão de classificar o Botafogo para a semifinal do Campeonato Carioca. Enquanto aguarda a concretização da SAF, porém, a queda de rendimento da equipe testa a paciência da torcida alvinegra, que não poupou críticas após a derrota para a Portuguesa-RJ, no último domingo.

Um problema se mostra mais urgente para a comissão técnica: o sistema defensivo. Nos últimos quatro jogos, ou seja, após a saída de Enderson Moreira, o Glorioso levou nove gols.

Os números fizeram o Botafogo figurar como a segunda pior defesa do Estadual, com 14 gols contra, atrás apenas do nono colocado Nova Iguaçu e do lanterna Boavista, ambos vazados 15 vezes.

Para se ter uma ideia, nos 31 jogos sob comando de Enderson, foram 18 gols sofridos, tendo uma média geral de 0,58. Nos últimos compromissos — contra Vasco, Resende, Flamengo e Portuguesa-RJ —, o Alvinegro não tomou gol apenas contra o rival de São Januário, e a média subiu para 2,25.

"De fato, houve no jogo de hoje um exagero no resultado. Se você errar, o adversário tem a capacidade de fazer os gols. Como já falei, foi noite que não queríamos. Não foi um bom jogo, erramos muito individualmente. Foi um resultado que acaba sendo além do que esperávamos", disse Lucio Flávio, em entrevista após o jogo no Luso-Brasileiro.

O resultado negativo de 5 a 3 frente à Lusa do Rio de Janeiro fez com que muitos torcedores não mostrassem mais a mesma paciência de outrora, mesmo conscientes do momento que o clube a. Críticas puderam ser percebidas tanto na arquibancada, com vaias, quanto nas redes sociais.

Na internet, inclusive, alvinegros questionavam o clube sobre os motivos de a da SAF não ter sido concluída, uma vez que John Textor veio ao Rio de Janeiro na última semana.

Outrora líder, o Botafogo ainda busca concretizar a vaga na semifinal do Carioca. Com 16 pontos, o Alvinegro está em quarto lugar, e vê a Portuguesa-RJ e Madureira, com 11, mais próximos.

Os trâmites para a transição para a SAF estão próximos do fim, e o Glorioso vive a expectativa para que tudo seja concluído logo após o Carnaval. Alguns assuntos no departamento de futebol dependem deste novo o para que possam avançar, como, por exemplo, a chegada da nova comissão técnica e reforços.

Há um acerto com o técnico português Luís Castro, e Textor já fez alguns contatos por nomes que pretende incorporar ao elenco visando, principalmente, o Brasileiro.

Botafogo