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

Dia sem jogo no Qatar: uma retrospectiva dos protestos da Copa até aqui

Mulher protesta pela morte de Mahsa Amini - REUTERS/Dylan Martinez
Mulher protesta pela morte de Mahsa Amini Imagem: REUTERS/Dylan Martinez

07/12/2022 17h37

Receba os novos posts desta coluna no seu e-mail

Email inválido

Pela primeira vez em 17 dias, não teve Copa. Achei que estava cansada da Copa, até que não teve Copa e descobri que o dia fica um pouco sem graça sem Copa.

Mas as reflexões não param.

Como não tem Copa, os canais que cobrem a Copa estão fazendo retrospectiva de tudo que aconteceu até aqui na Copa. E aconteceu muita coisa.

Dentro de campo, claro. Zebras quase inéditas, momentos heroicos e trágicos, pênaltis mal batidos, 250 minutos de acréscimos, muitos gols, algumas lágrimas.

O que mais me chama a atenção, porém, é a quantidade de protestos diferentes. As tantas vezes em que, como disse uma amiga e eu roubei para a coluna de ontem, o a geopolítica atravessou o futebol. Ou vice-versa.

Há quem não goste que jornalistas, especialmente esportivos (esportivas então, nem se fala), misturem qualquer coisa de fora com o que acontece dentro do gramado. Só lamento.

Primeiro, porque sou humana e não consigo apagar o contexto do mundo quando o juiz apita. Segundo, porque foi a FIFA quem escolheu levar seu maior evento para um lugar tão complexo. Ainda que não houvesse todas as questões de direitos humanos do Qatar, seria ingênuo esperar que ninguém se aproveitasse do maior palanque do planeta para defender seus valores.

Segue então uma breve retrospectiva dos protestos, que não foram nada acolhidos pelo Qatar, que mostrou que quem manda nessa bagaça são os donos da casa. O país FIFA está bem quietinho, aliás.

Mulheres iranianas: elas, que no Irã não podem ir aos estádios, estão presentes na Copa, deixando claro que o que aconteceu com Mahsa Amini, reflexo das opressões diárias sofridas no país, não será tolerado. Aliás, não foram poucos também os casos de assédio sofridos por torcedoras e profissionais trabalhando no evento. Não nos querem, mas já chegamos e não vamos a lugar nenhum.

Manifestação sobre silêncio acerca das guerras na África: talvez naquele que tenha sido o protesto menos falado, o senegalês Ismaila Sarr comemorou seu gol contra o Equador tampando os olhos com uma mão e simulando uma arma apontada para a cabeça com a outra. Ele tentava chamar a atenção exatamente para o descaso do mundo com as guerras civis no seu continente, especialmente em relação aos massacres na República Democrática do Congo.

Racismo: antes do início das suas partidas, esperando o apito inicial, os jogadores ingleses se ajoelharam em protesto aos episódios de racismo, ainda tão presentes e tão cruéis no futebol.

Palestina: na comemoração da histórica classificação para as quartas de final, depois de derrotar a Espanha nos pênaltis, a seleção do Marrocos tirou uma foto coletiva segurando a bandeira da Palestina. O claro sinal de apoio vai ao encontro do sentimento de solidariedade árabe ao redor da Palestina, contra a ocupação israelense e a formação de um novo Estado. Os marroquinos carregam consigo, agora, a responsabilidade de serem os últimos representantes do continente africano e do mundo árabe, na competição.

Comunidade LGBTQIA+: desde as singelas tentativas de uso de abraçadeiras, ando pelo protesto da "amordaçada" seleção alemã, até a invasão de campo com a bandeira do arco-íris (e as muitas que foram confiscadas pela segurança local), não faltaram demonstrações sobre o quanto a pauta é importante também no futebol.

Dancinha: até reclamação de dancinha teve, minha gente. Do alto do seu troninho colonialista, o ex-jogador carniceiro e comentarista irlândes Roy Keane achou por bem reclamar das comemorações bailantes do Brasil, na goleada sobre a Coreia do Sul. Na melhor das hipóteses, babaca. Na pior das hipóteses, ignorante e racista. Vai te catar, Roy.

Não foi só isso e tenho certeza que vem mais por aí. Ainda bem. Porque nunca é - nem nunca foi ou será - só futebol.