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

Vasco vence o Botafogo nos pênaltis e conquista a Taça Rio

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

22/05/2021 17h15

O Vasco venceu o Botafogo nos pênaltis e conquistou a Taça Rio, após ter perdido por 1 a 0 no tempo regulamentar. O Cruzmaltino havia ganhado por 1 a 0 o duelo de ida e tinha vantagem para o jogo de hoje, em São Januário, mas viu o Botafogo crescer no segundo tempo e marcar com Gilvan. Nos pênaltis, Vanderlei pegou as três cobranças do Botafogo e garantiu a vitória por 3 a 0 do Vasco.

A Taça Rio foi vencida pelo Vasco pela 11ª vez. O clube encarou o torneio como preparação para o início da Série B do Campeonato Brasileiro. O título de hoje é equivalente ao quinto lugar do Campeonato Carioca. O Botafogo também se prepara para a Série B do Brasileiro.

" width="560">

Botafogo pressiona

Como precisava vencer ao menos por um gol de diferença para ficar com a Taça Rio, o Botafogo iniciou o jogo pressionando o Vasco. E levou perigo logo no primeiro minuto, quando Pedro Castro estava livre dentro da área e cabeceou para fora após cobrança de escanteio.

Festival de es errados

As duas equipes buscavam as jogadas ofensivas, mas não tiveram qualidade na criação. Foram muitos es errados ao longo do primeiro tempo que interromperam os ataques.

Vasco só assusta no fim do primeiro tempo

Só aos 45 minutos de jogo que o Vasco conseguiu levar certo perigo ao Botafogo. Zeca recebeu pela esquerda, teve espaço para carregar para o meio e chutou forte de fora da área, exigindo boa defesa de Douglas Borges.

Vasco começa segundo tempo melhor

Ao contrário do que aconteceu no primeiro tempo, o Botafogo não conseguiu pressionar no início da etapa complementar. O Vasco tinha mais posse de bola e era mais efetivo nas chegadas ao ataque.

Botafogo abre o placar

O Botafogo chegou ao gol aos 26 minutos, com Gilvan, aproveitando uma bobeira geral da defesa vascaína. Vanderlei saiu mal do gol, a bola sobrou para Navarro, que chutou e viu o goleiro defender, mas Gilvan aproveitou o rebote e mandou de cabeça para o fundo da rede.

Vasco não mostra poder de reação

O Vasco sentiu o gol sofrido e não mostrou poder de reação para chegar ao empate. A equipe estava desorganida e sentia falta de Morato, que ficou caído com câimbras e teve de ser substituído.

Botafogo desperdiça chances

Após abrir o placar, o Botafogo conseguiu criar algumas chances para ampliar e garantir o título da Taça Rio no tempo regulamentar, mas desperdiçou as oportunidades. A melhor saiu com Felipe Ferreira, que recebeu dentro da área e finalizou para fora.

Pênaltis

Andrey, Zeca e Gabriel Pec fizeram para o Vasco. No Botafogo, Pedro Castro, Felipe Ferreira e Matheus Frizzo desperdiçaram as primeiras cobranças.

VASCO (3) 0 X 1 (0) BOTAFOGO

Local: São Januário, no Rio de Janeiro (RJ)
Hora: 15h05 (horário de Brasília)
Árbitro: Mauricio Machado Coelho Júnior
Auxiliares: Carlos Henrique Alves de Lima e Lilan da Silva Fernandes
Cartão amarelo: Warley (Botafogo)
Gol: Gilvan, aos 26 minutos do 2º tempo

VASCO: Vanderlei, Léo Matos, Ernando, Ricardo Graça e Zeca; Andrey, Galarza (Romulo) e Morato (Figueiredo); Léo Jabá (Juninho), Gabriel Pec e Germán Cano. Técnico: Marcelo Cabo

BOTAFOGO: Douglas Borges, Warley, Kanu, Gilvan e Paulo Victor (Rafael Carioca); Romildo (Matheus Frizzo), Ricardinho (Felipe Ferreira) e Pedro Castro; Ronald (Marcinho), Marco Antônio (Ênio) e Rafael Navarro. Técnico: Marcelo Chamusca.

' data-autoplay='true' data-start='' data-mute='true' data-related='false' data-btnfollow='false' frameborder='0' allow='autoplay; encrypted-media' allowfullscreen>