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

Nina Lemos

OPINIÃO

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

Bandeirinha agredida: como é tratada quem ousa entrar em espaços masculinos

Técnico da Desportiva Ferroviária acerta cabeçada em auxiliar durante jogo do Campeonato Capixaba - Reprodução
Técnico da Desportiva Ferroviária acerta cabeçada em auxiliar durante jogo do Campeonato Capixaba Imagem: Reprodução

Colunista de Universa

11/04/2022 12h48

A cena corre pela internet e programas de TV. Na tarde de domingo (10), durante um jogo de futebol entre os times Nova Venécia e Desportiva, no Espírito Santo, houve uma discussão no meio do campo entre jogadores e árbitros. Até que o técnico Rafael Soriano, da Desportiva, dá uma cabeçada na auxiliar de arbitragem do jogo, Marcielly Neto. Ela colocou a mão na cara sentindo dor e a maioria dos jogadores simplesmente a ignorou. Sim, isso aconteceu de verdade.

O técnico atacou Marcielly com força e só não a machucou mais porque foi contido por um dos juízes do jogo. Depois da agressão, ele teria dito para ela: "Se você disser que eu te agredi nós vamos para a delegacia, eu vou te processar", afirmou Rafael Soriano, que tentou negar a agressão. "Ela está dizendo que eu agredi. Mentira. Está se usando porque é mulher. Está querendo aproveitar de uma situação porque é mulher", disse.

Como assim? A cena foi gravada e todo mundo viu que houve, sim, agressão. E que vantagem em ser mulher é essa? A "vantagem" de ser agredida?

Testemunhas que estavam no jogo contaram no Twitter que essa não foi a única agressão sofrida pela assistente de arbitragem. Ela também teria sido xingada de "vagabunda" e outras palavras de baixo calão. Alguns torcedores teriam aproveitado para dizer para a profissional ir para casa, já que ali não era "lugar de mulher". O pecado de Marcielly estar no meio de uma confusão alheia. O técnico perdeu o controle depois que o árbitro principal encerrou o primeiro tempo antes do time dele cobrar um escanteio. Ou seja, ela só estava fazendo seu trabalho e por isso levou uma cabeçada na boca.

Sim, há anos nós, mulheres, insistimos que lugar de mulher é onde a gente quiser. Mas, vamos ser sinceras, ainda não é assim. Ainda precisamos abrir nossos espaços à força. Esse é o caso de todas as mulheres que trabalham em ambientes masculinos, em profissões que até pouco tempo eram exclusivas dos homens.

Ser árbitra de futebol talvez seja um dos "clubes do Bolinha" mais difíceis para uma mulher entrar. Afinal, futebol sempre foi considerado coisa de homem (só que não, e a seleção brasileira feminina de futebol está aí para provar).

Provas disso: só recentemente algumas mulheres foram escaladas para apitar jogos importantes. Exemplo: em 2003, a veterana Silvia Regina se tornou a primeira mulher brasileira a apitar um jogo do Brasileirão. Legal. Mas só em 2019 outra mulher (a também pioneira Edina Alves) foi escalada novamente para a posição.

As coisas estão melhorando. Segundo a CBF, o número de mulheres na arbitragem cresceu 400% nos últimos dez anos.

Mas essas mulheres ainda são exceção e completa minoria em um ambiente de homens. Um técnico dar uma cabeçada no rosto de uma dessas pioneiras é uma amostra do tipo de falta de consideração que alguns homens têm por mulheres que ousam entrar em áreas que eram "deles".

Por enquanto, o técnico foi demitido e suspenso da Federação Espírito Santo de futebol. Nomes importantes do futebol repudiam o caso. É o mínimo. E ainda é pouco.