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

Alicia Klein

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Duas más notícias: Brasil deve pegar a Espanha e deixaram a Alemanha viva

Füllkrug empata para a Alemanha contra a Espanha na Copa do Qatar - Ina Fassbender / AFP
Füllkrug empata para a Alemanha contra a Espanha na Copa do Qatar Imagem: Ina Fassbender / AFP

Receba os novos posts desta coluna no seu e-mail

Email inválido

O 1 a 1 de Alemanha e Espanha encerrou mais um dia arrebenta-bolão dessa Copa.

O Japão, que venceu a Alemanha, perdeu da Costa Rica, que tomou 7 a 0 da Espanha. O placar não refletiu a partida, dominada pelo time asiático, mas é aquela velha história do futebol: chance de gol não vale ponto. Podiam ter colocado a Alemanha em campo com a chance matemática da desclassificação. Não o fizeram. Azar de todo mundo, pois com esses tetracampeões não se brinca.

Como ficou provado nesta tarde.

Em uma das belíssimas trocas de es espanholas, Jordi Alba cruzou para Álvaro Morata guardar o seu, aos 17 do segundo tempo. Um centroavante com presença de área era o que faltava à Fúria. Morata estava em campo fazia nove minutos. Grande volume de jogo, pressão no adversário.

Não adiantou. Aos 38, Niclas Fullkrug aproveitou a sobra do menino Musiala e meteu um tiro indefensável na meta de Simón.

Em 20 Copas, a Alemanha nunca perdeu três partidas seguidas. Não será em 2022.

Na emocionante última rodada do grupo E, os germânicos pegam a frágil Costa Rica. Se vencerem, chegarão a 4 pontos. Espanha (com 4 pontos) e Japão (com 3) se enfrentam e um empate pode até garantir os dois nas oitavas, a depender do saldo alemão. A lógica seria a Espanha vencer o Japão e a Alemanha, a Costa Rica, ando os dois favoritos. Mas quem quer apostar em lógica no Qatar?

Em resumo, minhas amigas e amigos, deixaram a Alemanha viva. Como eles diriam por lá: nicht gut. Nada bom.

A pior notícia para o Brasil, porém, é que dificilmente a Espanha não será a primeira do grupo, o que significa um confronto conosco nas quartas. Pedreira das brabas.

(Já que falei em estoura-bolão, preciso ressaltar que a grande zebra do dia foi a vitória com folga do Marrocos sobre a Bélgica. Tem uma galera que não gosta quando misturo política e futebol. Lamento porque a relação entre os dois é real, um servindo de instrumento do outro. Então, confesso que me dá enorme alegria ver uma seleção africana derrotando uma europeia, especialmente em Mundial. Os belgas, aliás, parecem estar no Qatar meio contra a vontade. Um sono?)

Errata: este conteúdo foi atualizado
Diferentemente do que foi informado, a Alemanha é tetracampeã da Copa do Mundo. O erro foi corrigido.

** Este texto não reflete, necessariamente, a opinião do UOL