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

OPINIÃO

Caso Robinho: Milly cobra mudança na educação nos clubes de futebol

Do UOL, em São Paulo

28/02/2023 10h22

O Ministério Público Federal entregou ontem à Justiça um documento no qual defende a prisão do ex-jogador. O processo pode levar até seis meses para ser concluído.

O UOL News Esporte avaliou o fato. A colunista Milly Lacombe entende que o caso Robinho pode servir de exemplo para um processo educacional contra a cultura do estupro, que precisa contar com apoio do meio do futebol.

"Acho que não vai demorar seis meses. Acho que a opinião pública está em cima. Acho que vai ser mais rápido, acho que ele vai acabar preso. Acho também que é muito importante que a gente use esse caso do Robinho para entender que o Robinho não é um monstro destacado da sociedade. O que o Robinho fez acontece a cada dez minutos", disse Milly Lacombe.

"A gente faz isso (denunciar casos de violência sexual) sem um projeto para educação na base dos clubes, na base do futebol, que a CBF se envolva, que todos se envolvam. Explicar o que é a cultura do estupro, porque que a gente vive numa sociedade que diz para a menina 'Não se deixe estuprar', mas não diz para o menino 'Não estupre'", adicionou a colunista. "O futebol tem que se envolver em projetos de educação".

Perder Recopa é vexame?

"Por mais que o projeto esportivo do Del Valle seja altamente respeitável, seria um vexame para o Flamengo e daria um tom muito ruim para esse início de temporada", disse André Rocha.

VP não deve ser demitido após eventual vice

"Digamos que perca a Recopa Sul-Americana agora. Mas se lá para frente ganhar o título brasileiro, quem é que vai dizer que a temporada do Flamengo foi um fracasso?", disse André Rocha.

Ronaldo Giovanelli candidato à presidência do Corinthians?

"Não apostaria nisso. A gente precisa de renovação no futebol, a gente precisa de novas caras, novas maneiras de istrar o clube", disse Milly Lacombe

Luan fica no São Paulo?

"Parece que ele não quer ficar. Pelo que tenho lido, ele está negociando uma certa titularidade, um certo protagonismo no time, me parece estranho", disse Milly Lacombe.

Wallace ficará impune?

"Quem fez essa incitação à violência foi o Wallace pessoa. O Wallace cidadão, atirador, que defende uso de armas, não é o jogador. Ele não fez isso no âmbito da competição, ligado à Superliga. E o STJD julga o que acontece na competição", disse Demétrio Vecchioli.

Confira o programa na íntegra