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

Vídeo de torcedores na Rússia é também racista, dizem ativistas

Reprodução
Imagem: Reprodução

Helena Bertho

da Universa

21/06/2018 12h10

O vídeo dos torcedores brasileiros na Rússia tem repercutido e causada indignação pelo machismo. No entanto, ativistas negras têm chamado atenção para uma outra forma de preconceito presente no vídeo, ignorada pela maioria das pessoas: o racismo.

"Não vi ninguém falar sobre o racismo que existe nessa idealização das partes do corpo feminino", escreveu a jornalista Isabela Reis, em um post que já teve mais de 13 mil curtidas.

Veja também:

"Quando um homem escolhe uma mulher porque a boceta ou os mamilos dela são rosinhas, ele está excluindo do radar todas as mulheres negras que têm a boceta e mamilos castanhos, beges, escuros. Quando você limita suas parceiras pela cor da vagina, você desconsidera qualquer tipo de relacionamento com mulheres negras. E isso é grave, porque não é só preferência pessoa, é o comportamento de toda uma população", explicou ela.

"Falam que quanto mais rosinha, melhor"

Os gritos dos homens, valorizando a "boceta rosa" como algo a ser celebrado, são, segundo as ativistas ouvidas pela Universa, uma forma comum de diminuir as mulheres negras. "Sempre foi uma forma de nos diminuírem. Nos separam das outras mulheres pela pigmentação da nossa pele", disse a produtora cultural Kamilah Pimentel, 32 --a mãe da MC Sophia.

"No vídeo, eles reproduzem machismo, mas levam a cor da genitália da moça como algo positivo. Como a nossa é diferente, é negativa", falou ela, completando que acha que se trata de mais uma forma de rebaixar as mulheres negras. "Sempre colocam a mulher negra como inferior, rebaixando nossa estética, criando folclores e estereótipos".

Para a Youtuber Maíra Azevedo, essa situação reforça a forma como mulheres negras são preteridas nos relacionamentos. "Ou a gente é objetificada, como fetiche, ou somos renegadas. A branquitude é sempre associada ao que tem de melhor. Vários homens falam que quanto mais rosinha a boceta, melhor, e por isso a gente continua sozinha".

"Dizer 'boceta marrom' não deixaria o vídeo menos doloroso"

No entanto, Maíra acredita que é preciso tomar cuidado com essa questão. "Eles fazem aquela ode à cor da mulher como se fosse a melhor coisa do mundo. Mas, entenda, imagina ele dizer 'boceta marrom', isso não ia fazer o vídeo ser menos doloroso para mim", diz ela, que acredita que é preciso reconhecer o racismo, mas sem ignorar o machismo.

"Eu, mulher, me sinto agredida, eu me coloco no lugar daquela mulher. Não gosto de nenhum tipo de graça que seja feito através do escárnio com outra pessoa. Isso é seguir oprimindo, não é brincadeira".

Para a empresária Barbara Hanelore, especialista em desenvolvimento pessoal feminino, o vídeo  é um desrespeito a todas as mulheres, independente de cor, por mostrar "o machismo institucionalizado. Essa atitude de colocar a mulher numa posição de fragilidade e usufruir disso publicamente ".

Após a polêmica, os autores do vídeo foram identificados. Um deles, Felipe Wilson, era funcionário da Latam e foi demitido