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

Entenda o drama dos critérios que resultou na classificação da Polônia

Szczesny celebra com companheiros a defesa de pênalti na partida entre Polônia e Argentina - Richard Heathcote/Getty Images
Szczesny celebra com companheiros a defesa de pênalti na partida entre Polônia e Argentina Imagem: Richard Heathcote/Getty Images

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

30/11/2022 18h18

Classificação e Jogos

Mesmo derrotada pela Argentina por 2 a 0 hoje (30), a Polônia se garantiu nas oitavas de final da Copa do Mundo do Qatar na segunda colocação do Grupo C. Com quatro pontos, os poloneses superaram os mexicanos no saldo de gols (0 a -1), mas viveram um drama antes da confirmação da vaga.

Os poloneses só respiraram mais aliviados quando Al-Dawsari, aos 50 minutos do segundo tempo, descontou para a Arábia Saudita contra o México — vitória por 2 a 1 dos mexicanos —, tirando um gol de saldo da seleção comandada por Tata Martino. Até o tento do camisa 10 saudita, os europeus estavam se classificando por um critério inusitado: o número de cartões.

Empatados em pontos, Polônia e México não se superavam em nenhum dos seguintes critérios: saldo de gols, gols marcados e confronto direto - as seleções empataram em 0 a 0 na primeira rodada. Assim, entrou em ação o chamado "histórico de fair play" .

Nele, a Fifa estabelece uma pontuação levando em conta os cartões vermelhos e amarelos. Neste caso, os pontos são perdidos a cada advertência.

Um cartão amarelo tira um ponto, enquanto um cartão vermelho após dois amarelos deduz dois pontos; o cartão vermelho direto vale quatro pontos. Nos casos de Polônia e México, os poloneses terminaram com um "histórico de fair play" de -5 pontos, contra -7 dos mexicanos.

"Se um empate por pontos não puder ser decidido depois de levar em consideração o saldo de gols, os gols marcados e os três critérios de confronto direto [pontos, saldo e número de gols], a Fifa se volta para o histórico de fair play das equipes", diz o regulamento.

"Cada lado recebe uma 'pontuação de conduta da equipe', que é calculada deduzindo um ponto para cada cartão amarelo; dois pontos por cada cartão vermelho resultante de dois cartões amarelos; quatro pontos para cada cartão vermelho direto; e cinco pontos para cada cartão amarelo e cartão vermelho direto. A nação com a maior pontuação vence".

A situação poderia ficar mais inusitada ainda. Caso os jogos terminassem em 2 a 0 para a Argentina e 2 a 0 para o México, com a Polônia recebendo dois cartões amarelos a mais, a definição da vaga aconteceria por meio de sorteio. O gol de Al-Dawsari, contudo, encerrou isso e garantiu os poloneses na próxima fase.

Classificada às oitavas, a Polônia tem a França como próxima adversária. As seleções duelam no próximo domingo (4), às 12h (de Brasília).

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

Enquete encerrada

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