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

Grêmio vence Corinthians e garante vaga na fase de grupos da Libertadores

Siga o UOL Esporte no

Do UOL, em São Paulo

02/12/2018 18h58

Apoiado por mais de 40 mil torcedores na Arena, o Grêmio bateu o Corinthians por 1 a 0 neste domingo (2) em Porto Alegre e garantiu a vaga direta na fase de grupos da Copa Libertadores da América do ano que vem ao terminar o Campeonato Brasileiro na quarta colocação. Jael fez o único gol do jogo.

O resultado deixou a equipe do técnico Renato Gaúcho com 66 pontos, três a mais que o rival direto São Paulo, que perdeu para a Chapecoense. Já o time de Jair Ventura, que está de saída do cargo, encerra de forma melancólica a temporada. Com apenas 18 pontos no returno (mesma campanha do rebaixamento em 2007) e 44 no total, os corintianos terminam o torneio nacional em 13º, com vaga na Copa Sul-Americana. 

O melhor: Everton

O atacante coroou o ano em que vestiu a camisa da seleção brasileira pela primeira vez com mais uma ótima atuação. Bastante acionado, criou boas jogadas, distribuiu dribles e por pouco não fez dois golaços.

O pior: Léo Santos

Mais uma vez apático como visitante, o Corinthians deixou a desejar em todos os setores. Mas o zagueiro foi especialmente mal, sendo presa fácil para Everton e errando lances bobos. 

Só um time joga

Com Michel improvisado na zaga, o Grêmio começou a partida pressionando, enquanto o Corinthians, cuja principal novidade foi Gabriel na vaga do suspenso Ralf, não trocava três es seguidos. Aos 11 minutos, Maicon cruzou, Henrique tentou cortar e Jael cabeceou. Era o gol tricolor que parecia questão de tempo. 

Endiabrado

Everton infernizou a defesa do Corinthians no primeiro tempo. Primeiro, ou como quis por Fagner e Jadson antes de ser parado com falta. Minutos depois, entortou Léo Santos e carimbou a trave. Em seguida, deixou três adversários para trás e bateu para fora, quase anotando um gol de placa. Alisson, de cabeça, também esteve perto de ampliar para os donos da casa no primeiro tempo, enquanto os visitantes encerraram a etapa inicial sem criar uma chance de perigo sequer.

Segundo tempo burocrático 

O Corinthians tentou mudar o cenário do jogo na etapa final. Paulo Victor teve que trabalhar pela primeira vez e defendeu chute de Romero. Mas o time da casa soube resistir às demais investidas e ainda assustou em contra-ataques. Léo Moura, Maicon e Jael foram muito aplaudidos quando substituídos. No Corinthians, Danilo substituiu Pedrinho e atuou pela equipe paulista pela última vez. Nem ele, nem ninguém, conseguiu alterar o placar novamente. 

Festa para os campeões de 83

Integrantes do elenco que venceu o Hamburgo em Tóquio no Mundial foram homenageados pelo Grêmio neste domingo. Entre eles, Valdir Espinosa, que deixou cargo diretivo no clube ano ado. O grupo visitou os vestiários e foi ao gramado antes de a bola rolar, sendo ovacionado pela torcida. 

Festa para Renato

Renato Gaúcho em Grêmio x Corinthians - Lucas Uebel/Grêmio FBPA - Lucas Uebel/Grêmio FBPA
Imagem: Lucas Uebel/Grêmio FBPA

O herói do título da conquista de quase 35 anos atrás mais uma vez viveu uma tarde especial. De contrato renovado, Renato Gaúcho foi o mais celebrado quando a escalação tricolor foi anunciada na Arena. Também não faltaram cartazes de agradecimento pela permanência e provocações ao Flamengo, que pretendia o treinador

De saída

O duelo na Arena deve ter sido o último de Jair Ventura no comando do Corinthians, que tem acerto encaminhado com Fábio Carille para o ano que vem. Em entrevista ao "Sportv" antes da partida, o atual comandante alvinegro tentou minimizar a situação. "Faz parte vida do treinador saber conviver. Quando você opta em ser treinador você tem que conviver com todas as situações. Sigo tentando fazer o meu trabalho da melhor forma. Como já disse algumas vezes, está nas mãos da diretoria a permanência ou não". 

Ficha técnica

Grêmio 1 x 0 Corinthians

Data: 02/12/2018
Horário: 17h (de Brasília)
Local: Arena do Grêmio, em Porto Alegre (RS)
Árbitro: Ricardo Marques Ribeiro (Fifa/MG)
Cartões amarelos: Jael, Kannemann (Grêmio); Romero, Henrique, Léo Santos, Carlos Augusto (Corinthians)
Cartões vermelhos: Nenhum

Gols: Jael, aos 11 minutos do primeiro tempo.

GRÊMIO: Paulo Victor; Léo Moura (Matheus Henrique), Kannemann, Michel e Cortez; Maicon (Douglas), Ramiro, Alisson, Cícero e Everton; Jael (André). Técnico: Renato Gaúcho

CORINTHIANS: Cássio; Fagner, Léo Santos, Henrique e Carlos Augusto; Gabriel (Douglas), Thiaguinho, Pedrinho (Danilo), Jadson e Mateus Vital (Clayson); Romero. Técnico: Jair Ventura