;(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
ANÁLISE

Copa abre com festa fria, show suntuoso e futebol constrangedor do Qatar

Rodrigo Mattos

Colunista do UOL, em Doha (Qatar)

20/11/2022 15h31

Classificação e Jogos

A temperatura no Al Bayt, estádio de abertura da Copa, é sempre baixa por causa do ar-condicionado. Mais fria, no entanto, foi o clima nas arquibancadas e no entorno do estádio, com exceção do ânimo dos equatorianos no fundo do campo e uma 'organizada qtari'. Não ajudou o fato de futebol do Qatar ter níveis constrangedores para a Copa.

O primeiro jogo entre o time anfitrião e o Equador foi disputado no meio do deserto, afastado do centro de Doha.

A construção do Al Bayt em formato de tendas impressiona dentro e fora das instalações. Também não faltou produção para a festa de abertura da Copa, que se aproximou de cerimônias para o início da Olimpíada e não de Mundiais de futebol. Havia luzes, danças e camelos, além de lembranças a Copas adas.

De discursos, uma promessa de receber bem a todos e aceitar diferenças em meio aos questionamentos ao Qatar por causa das suas leis restritivas ao público LGBTQIA+.

Quando o som parou, no entanto, o silêncio chamava a atenção em relação ao que se vê habitualmente em estádios de futebol. Foi rompido apenas pelas três fileiras concentradas de torcedores do Equador no fundo do campo. Os sul-americanos, sim, gritavam o nome do país, tinham seus cantos de apoio, festejam Enner Valencia.

Do outro lado, surgiu uma "torcida organizada' do Qatar. Todos com a mesma roupa vinho, com inscrição com o nome do país, tinham gritos e coreografias. Havia dois coordenadores à frente. Foram constantes nos gritos, mas não puxaram o estádio.

A maioria das 67 mil pessoas presentes manteve-se sentada assistindo ao jogo ivamente, os homens de branco, as mulheres de roupas escuras. Os equatorianos até tentaram puxar olas que se estenderam apenas por suas fileiras. Os qataris não se mexiam. Os torcedores sul-americanos ainda gritaram em determinado momento: "Queremos cerveja, queremos cerveja". Uma crítica ao veto à bebiba no entorno dos estádios, decisão do Qatar.

Em campo, o time Qatar apresentava um futebol longe do nível de Copa do Mundo. A defesa estava desorganizada, o time mal trocava três es. O goleiro Alsheeb cometia falhas que nem na Série D do Brasileiro são vistos. O time anfitrião não tinha nem nível de competitividade para marcar e enfrentar o rival.

O massacre equatoriano, que é um bom time, era previsível. Enner Valencia teve que fazer três gols para valerem dois. Logo aos 3min, um tento foi anulado sendo o primeiro em que foi utilizado o sistema semi-automático de VAR da Fifa para impedimento.

Com o jogo meio decidido, no segundo tempo, o clima no Al BAyt era ainda mais frio. Bem antes do final do jogo, os qatari já tinham abandonado em grande número as arquibancadas. Sobrou o grito de satisfação dos equatorianos para nos lembrar que estávamos em um estádio de futebol.

Qual seleção vai ser a campeã da Copa do Mundo do Qatar?

Enquete encerrada

Total de 43743 votos
7,61%
Divulgação/Adidas