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

Breve esclarecimento sobre o caso Neymar para os defensores de plantão

Neymar, da seleção brasileira, comemora gol contra a Croácia na Copa do Mundo. - Pedro Martins/Pedro Martins/AGIF
Neymar, da seleção brasileira, comemora gol contra a Croácia na Copa do Mundo. Imagem: Pedro Martins/Pedro Martins/AGIF

24/01/2023 18h37

Receba os novos posts desta coluna no seu e-mail

Email inválido

É só a gente falar de um jogador de futebol acusado de estupro, que aparecem os defensores dos ricos e oprimidos. Cadê as provas? Ele já foi julgado? Inocente até que se prove o contrário. Etc. etc. etc.

No caso específico do Dani Alves: sim, há provas; não, mas ele já está preso sem direito a fiança enquanto aguarda julgamento; ele é inocente até que se prove o contrário, assim como a mulher que o acusa.

Até aí, tudo quase bem.

O problema é quando chega a tropa do Neymar. Falando daquela golpista, que ficou provado que cometeu fraude, que ele foi inocentado, que isso prova que está cheio de interesseira por aí.

Neymar não foi julgado culpado, fato. Também não foi julgado inocente. O inquérito acabou arquivado por falta de provas, o que é bem diferente — nem sempre há provas desse tipo de crime, o que o torna ainda mais cruel.

Najila, a outra parte envolvida, não teve o pedido de julgamento por acusação caluniosa e extorsão aceito pela justiça, e foi absolvida da acusação de fraude processual.

E tem uma outra história, sobre a qual quase ninguém fala e que rapidamente sumiu da imprensa à época. A da funcionária da Nike que o acusou de abuso sexual, levando a empresa a rescindir seu contrato. O jogador nega e a mulher decidiu não levar o caso adiante, é importante ressaltar.

Não estou dizendo que Neymar é culpado. Apenas pedindo que falemos das coisas nos atendo aos fatos: o atleta não é um estuprador condenado, assim como Najila não é uma fraudadora condenada.

Outro fato: são raríssimas as acusações falsas porque a mulher não se beneficia do apedrejamento coletivo de uma sociedade que não nos respeita. Recomendo a leitura desse texto para quem se interessar pelo assunto.

A maioria das vítimas não tem sequer seu nome divulgado, e ainda assim ouve que está "querendo aparecer". Abre mão de compensação financeira prevista em lei e paga de "aproveitadora". Ou seja, dias de luta e dias de inglória.

Siga Alicia Klein no Instagram e no Twitter

Leia todas as colunas da Alicia aqui