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

Xhaka faz gesto obsceno e gera confusão em vitória da Suíça sobre a Sérvia

Jogadores de Suíça e Sérvia se desentendem em jogo pela Copa do Mundo do Qatar - Youssef Loulidi/Fantasista/Getty Images
Jogadores de Suíça e Sérvia se desentendem em jogo pela Copa do Mundo do Qatar Imagem: Youssef Loulidi/Fantasista/Getty Images

Do UOL, em São Paulo

02/12/2022 18h14

Classificação e Jogos

Camisa 10 da Suíça, Granit Xhaka iniciou uma confusão generalizada na vitória por 3 a 2 contra a Sérvia, hoje (2), pela Copa do Mundo do Qatar, ao fazer um gesto obsceno no decorrer do segundo tempo.

Enquanto os sérvios reclamavam de um pênalti em Mitrovic, Xhaka iniciou uma discussão e levou a mão às partes íntimas. O banco sérvio se revoltou com a atitude do jogador. A arbitragem tentou controlar os ânimos, mas o bate-boca se estendeu para dentro de campo.

Em campo, o goleiro Vanja foi tirar satisfação com Xhaka, e os demais jogadores de ambas as equipes entraram na confusão, que se dissipou após alguns minutos.

O clima, porém, estava quente desde o início da partida. Shaqiri, da Suíça, provocou os torcedores sérvios ao comemorar o primeiro dos suíços e levou um dos dedos à boca, pedindo silêncio.

Vlahovic respondeu ainda no primeiro tempo, ao repetir o gesto ao fazer 2 a 1 para os sérvios.

Antes da confusão generalizada ao fim do jogo, atletas da Suíça haviam se estranhado com o banco de reservas da Sérvia no início do segundo tempo, mas o atrito foi rapidamente controlado e rendeu cartão amarelo para Rajkovic, goleiro reserva da Sérvia que nem sequer estava em campo.

Com o resultado, a Suíça se classificou na segunda colocação do Grupo G e enfrentará Portugal nas oitavas de final.

Errata: este conteúdo foi atualizado
Diferentemente do que foi publicado no texto, a Suíça se classificou na segunda colocação do Grupo G, e não do Grupo H. O erro foi corrigido.