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

Real Madrid

Zidane elogia Real, ignora lanterna e confia em classificação na Champions

Zinedine Zidane comanda o Real Madrid em partida do Campeonato Espanhol, em julho de 2020 - Denis Doyle/Getty Images
Zinedine Zidane comanda o Real Madrid em partida do Campeonato Espanhol, em julho de 2020 Imagem: Denis Doyle/Getty Images

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

27/10/2020 20h23

O Real Madrid voltou aos gramados pela Liga dos Campeões hoje e, mais uma vez, não conseguiu a vitória. A, partida válida pela segunda rodada da fase de grupos aconteceu contra o Borussia Mönchengladbach, no Borussia-Park, acabou em 2 a 2.

Após o apito final, o técnico Zinedine Zidane comentou a fase do clube, que se encontra em último lugar no grupo B da competição, com apenas um ponto.

"Bom, vamos fazer de tudo para ar. Como sempre. O que sempre queremos é vencer. Mas, você tem que ver o conteúdo e hoje foi muito bom. Estou tranquilo porque eles deram tudo. Não existe um jogo fácil hoje. Temos que continuar trabalhando. Jogando assim vamos fazer coisas muito boas. Estou convencido de que vamos ar de fase, é claro", enfatizou o comandante.

Sobre a situação desconfortável neste início de Champions, o francês enfatizou: "Conhecemos a situação. Estamos na mesma posição do ano ado. Sabemos que, jogando assim, vamos colocar as coisas para fora. No final das contas o conteúdo ficou muito bom. É o mais importante. Todos pensaram que você poderia empatar e vencer."

Por fim, Zinedine voltou a parabenizar seus comandados pela atuação, justamente pelo fato de que a reação e determinação dos atletas foram muito nítidas em sua percepção.

"A equipe é o que mostrou. A reação. A primeira parte foi muito boa, o conteúdo foi bom. Pena é que sofremos o primeiro gol, mas continuamos pensando que era possível. Isso significa o caráter da equipe e muito orgulho deles. Jogamos um bom jogo o tempo todo, o jogo todo. A primeira parte foi ainda melhor que a segunda. Está faltando alguma coisa, porque no final é verdade que não marcamos. Você tem que se orgulhar da partida", finalizou.

Com dois gols de Marcus Thuram, os mandantes viram uma reação do Real Madrid na reta final do confronto, que em um intervalo de seis minutos conseguiu empatar o jogo com gols de Benzema e Casemiro.

Diante do resultado, o time espanhol coleciona uma derrota e um empate, somando apenas um ponto e em quarto lugar do grupo. O próximo desafio será diante da Inter de Milão, na próxima terça-feira, 3 de novembro, na Espanha.

Real Madrid