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

Eurocopa - 2021

Eurocopa: França emperra em retranca e fica no empate contra a Hungria

Griezmann briga pela bola durante França x Hungria, pela Eurocopa - Alex Pantling/Getty Images
Griezmann briga pela bola durante França x Hungria, pela Eurocopa Imagem: Alex Pantling/Getty Images

Do UOL, em São Paulo

19/06/2021 11h55Atualizada em 19/06/2021 17h21

Surpresa na Eurocopa! A França, que havia vencido na 1ª rodada, ficou no empate em 1 a 1 contra a retrancada Hungria, em duelo disputado na manhã de hoje em Budapeste e válido pelo Grupo F do torneio.

Com o resultado, os ses chegam a 4 pontos e ainda lideram a chave, que tem ainda hoje o duelo entre Portugal e Alemanha. Os húngaros, que atuaram em casa, marcam o 1° ponto e ainda sonham com a classificação.

O UOL Esporte fez um resumo do que foi a partida entre França e Hungria. Confira:

Começo truncado

Os primeiros minutos da partida ficaram marcados pelo excessivo número de faltas dos dois lados e pouquíssimas chances de gol.

Aos 9 minutos, quando o duelo ainda não tinha finalizações, Pavard foi "premiado" com o cartão amarelo precoce após falta em Sallai.

Assim não, Griezmann!

Na primeira grande jogada ofensiva do duelo, Griezmann perdeu a chance de balançar as redes dos donos da casa.

A jogada em questão aconteceu aos 13 minutos do 1° tempo. Após jogada de Mbappé por dentro, Benzema finalizou forte e rasteiro ao gol de Gulacsi.

O goleiro fez a defesa e espalmou, mas a bola foi em direção ao pé esquerdo do canhoto Griezmann, que estava a poucos os da pequena área. Livre, o atacante do Barcelona, no entanto, chutou rasteiro em cima de Gulacsi e desperdiçou o gol - a jogada, no entanto, foi invalidada por impedimento.

Griezmann desperdiçou o rebote em finalização de Benzema e chutou a bola em cima do goleiro Gulacsi  - Reprodução/Twitter - Reprodução/Twitter
Griezmann desperdiçou o rebote em finalização de Benzema e chutou a bola em cima do goleiro Gulacsi
Imagem: Reprodução/Twitter

Barreira húngara

A França começou a "tomar conta" do jogo nos minutos seguintes, pressionando a Hungria e criando as principais oportunidades de gol.

Mbappé, Pogba e Benzema foram os principais nomes de perigo ao gol de Gulacsi, mas a retranca dos mandantes - além da ótima atuação do goleiro - se sobressaiu e evitou o empate até o 2° tempo.

Surpresa!

A retranca gerava alguns contra-ataques para a Hungria, e foi em uma jogada do tipo que o jogo saiu do zero, já nos lances finais da etapa inicial.

Depois de tabelar com Sallai, Fiola avançou em velocidade pela esquerda e, já dentro da área, finalizou ao gol de Lloris e abriu o placar: 1 a 0.

Alívio francês

No 2° tempo, os visitantes voltaram com tudo em busca do gol. E foi aos 20 minutos que a França devolveu na mesma moeda. Em um contra-ataque puxado por Lloris, veio o empate.

Após lançamento do goleiro, Mbappé avançou em velocidade pela direita e cruzou rasteiro para o meio da área. O zagueiro Orban tentou afastar, mas a bola saiu fraca e sobrou para Griezmann. O atacante do Barcelona, desta vez, não desperdiçou e igualou o placar.

A França ainda martelou o adversário, mas parou em Gulacsi quando acertava o alvo e não conseguiu a virada.