;(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 bate a Portuguesa-RJ e avança à final da Taça Rio

Jogadores do Botafogo comemoram gol com selfie, em jogo contra a Portuguesa-RJ - Vitor Silva/Botafogo
Jogadores do Botafogo comemoram gol com selfie, em jogo contra a Portuguesa-RJ Imagem: Vitor Silva/Botafogo

[email protected] (Redação)

27/03/2023 22h19

O Botafogo confirmou o favoritismo e venceu por 3 a 1 a Portuguesa-RJ, nesta segunda-feira, no Raulino de Oliveira. Com o resultado, os alvinegros avançaram à final da Taça Rio.

O Botafogo abriu o placar no primeiro tempo, com Eduardo. No entanto, antes do intervalo, a Portuguesa-RJ empatou com Edicley. Na etapa final, os alvinegros voltaram a ficar à frente, com Victor Cuesta. Raí definiu a classificação.

Agora, os botafoguenses vão decidir a Taça Rio contra o Audax-RJ. O título vale a vaga direta para a Copa do Brasil de 2024.

O jogo

O Botafogo começou com postura ofensiva e criou a primeira chance, aos 11 minutos. Marçal arriscou de longe, mas pela linha de fundo. Na sequência, a partida caiu de rendimento.

A equipe de Luís Castro seguia buscando o ataque e chegou ao gol aos 26 minutos. Após saída de bola errada da Portuguesa-RJ, Eduardo aproveitou para mandar para a rede.

Somente após o revés, a Portuguesa-RJ foi ao ataque. Aos 41 minutos, Feitosa recebeu e na área, mas finalizou muito mal. Aos 44, os visitantes empataram no Raulino de Oliveira. Após cruzamento, a bola ou por todo mundo e chegou em Elicley. O atacante não perdoou e chutou para o gol para deixar tudo igual no intervalo.

Na etapa final, o Botafogo tentou esboçar uma pressão, mas viu a Portuguesa-RJ quase virar aos cinco minutos. Edicley foi lançado, entrou na área, mas chutou pela linha de fundo. Os alvinegros responderam em seguida, em cabeceio de Lucas Piazón.

Novamente, o jogo voltou a ficar concentrado entre as intermediárias. Somente aos 23 minutos, o Botafogo aproveitou cobrança de escanteio para marcar o segundo. Victor Cuesta apareceu na segunda trave para mandar para a rede.

O novo revés obrigou a Portuguesa-RJ partir para o ataque para buscar a virada. No entanto, o Botafogo aproveitou os espaços para sacramentar a classificação aos 37 minutos. Raí pegou rebote do goleiro e mandou para o gol.

A partir daí, o Botafogo ou a istrar o resultado. A Portuguesa-RJ sentiu o gol e não conseguiu mais reagir na partida. Assim, os alvinegros garantiram a vaga para a final da Taça Rio.

FICHA TÉCNICA

BOTAFOGO 3 X 1 PORTUGUESA-RJ

Local: Estádio Raulino de Oliveira, em Volta Redonda (RJ)

Data: 27 de março de 2023 (Segunda-feira)

Horário: 20h(de Brasília)

Árbitro: Alex Gomes Stefano (RJ)

Assistentes: Raphael Tavares dos Reis (RJ) e Rafael Sepeda de Souza (RJ)

Cartões amarelos: Di Plácido e Tchê Tchê (Botafogo); Feitosa e Elicley (Portuguesa-RJ)

GOLS - BOTAFOGO: Eduardo, aos 26min do primeiro tempo; Victor Cuesta, aos 23min do segundo tempo; Raí, aos 37min do segundo tempo

GOL - PORTUGUESA: Elicley, aos 44min do primeiro tempo

BOTAFOGO: Lucas Perri, Di Plácido (Rafael), Víctor Cuesta, Adryelson e Marçal; Tchê Tchê (Gabriel Pires), Lucas Fernandes (Marlon Freitas) e Eduardo; Lucas Piazón (Raí), Luís Henrique (Carlos Alberto) e Tiquinho Soares

Técnico: Luís Castro

PORTUGUESA-RJ: Bruno, Watson, Matheus Santos (Darlisson), Lucas Santos e Yuri; Feitosa, Anderson Rosa (Cafu), João Paulo (fernandes) e Emerson Carioca (Elicley); Romarinho e Lucas Silva

Técnico: Felipe Surian