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

Ultras do Atleti enforcam boneco com camisa de Vini Jr; La Liga condena ato

Torcedores do Atlético de Madri simularam enforcamento em boneco com a camisa de Vini Jr - Reprodução
Torcedores do Atlético de Madri simularam enforcamento em boneco com a camisa de Vini Jr Imagem: Reprodução

Do UOL, em São Paulo (SP)

26/01/2023 10h21Atualizada em 26/01/2023 11h34

Um grupo de ultras do Atlético de Madri simulou o enforcamento de um boneco com a camisa de Vinicius Junior.

  • O boneco foi pendurado em uma ponte próxima ao centro de treinamento do Real Madrid com uma faixa com a frase: "Madrid odeia o Real".
  • As equipes se enfrentam hoje, às 17h (de Brasília), no Santiago Bernabéu, pelas quartas de final da Copa do Rei.
  • O Atlético de Madri condenou a atitude de seus torcedores.

São fatos repugnantes e inissíveis que envergonham a sociedade. A rivalidade entre os dois clubes é máxima, mas também respeito. Nenhum indivíduo, quaisquer que sejam suas intenções ou cores, pode manchar a convivência entre diferentes hobbies. É responsabilidade de todos evitá-lo". diz o comunicado emitido pela equipe colchonera.

A La Liga também se posicionou. "Condenamos veementemente os atos de ódio contra Vini Jr. Intolerância e violência não cabem no futebol. Como em ocasiões anteriores, #LaLiga instará a apuração dos fatos em busca da condenação dos responsáveis, requerendo as mais severas sanções penais".

A Federação Espanhola de Futebol também apoiou Vini Jr. "Lamentamos e condenamos veementemente o ato intolerável cometido antes do duelo pela Copa do Rei entre o Real Madrid o Club Atlético de Madri desta quinta-feira (26). Além disso, gostaríamos de enviar uma mensagem de apoio a Vinicius, enviada diretamente por radicais de uma maneira deplorável".

O Real Madrid foi o último a se posicionar. Confira nota na íntegra:

O Real Madrid agradece o apoio e as manifestações de carinho recebidas após o lamentável e repugnante ato de racismo, xenofobia e ódio contra o nosso jogador Vinicius. Manifestamos a nossa mais firme condenação a acontecimentos que atentam contra os direitos fundamentais e a dignidade das pessoas, e que nada têm a ver com os valores que o futebol e o desporto representam. Estas agressões como as que sofre agora o nosso jogador, ou as que qualquer atleta pode sofrer, não podem ter lugar numa sociedade como a nossa. O Real Madrid está confiante de que todas as responsabilidades daqueles que participaram de um ato tão desprezível serão expurgadas".

Problemas com torcedores do Atleti são recorrentes

Em setembro do ano ado, antes de um duelo entre as equipe pelo Campeonato Espanhol, os torcedores do Atleti já haviam insultado Vini Jr com cânticos racistas — sócios do clube foram suspensos pelo episódio.

Na época, o brasileiro estava no centro de uma polêmica criada pelos rivais e pela imprensa espanhola criticando suas danças em comemorações de gols.