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

Ancelotti crê que Vini Jr seguirá na Espanha após racismo: 'ama o Real'

Colaboração para o UOL, em Santos (SP)

23/05/2023 08h49

Carlo Ancelotti deu entrevista coletiva hoje e foi questionado sobre a possibilidade de Vinicius Junior deixar a Espanha por conta dos frequentes episódios de racismo.

Não, acho que não. Vinicius ama o futebol e o Real Madrid. Seu amor pelo Real Madrid é grande, e ele quer fazer carreira neste clube"

O que aconteceu

O técnico pede que insultos não sejam mais normalizados no futebol: "Por que normalizamos insultos no futebol? Disseram que gritavam "tonto", não "macaco". E daí? Isso pode ser dito? É intolerável de qualquer maneira, tem que parar. Te chamam de filho da p***, bicha, dizem "Sua mãe vai morrer. Por quê? Tudo isso é uma grande chance de parar".

Ancelotti reconheceu haver racismo na Espanha e cobra mudanças. "E quero dizer que a Espanha não é racista, mas há racismo na Espanha, como em outros lugares. E isso tem que mudar".

Ele disse que esta é uma grande oportunidade para tentar melhorar as coisas. "Estamos todos muito preocupados pelo que aconteceu. Me parece justo que se esteja falando tanto sobre este tema. É uma grande oportunidade para melhorar as coisas. Vinicius está triste. Hoje não treinou porque tem um pequeno incômodo no joelho".

Ancelotti afirmou ainda que o protocolo contra racismo está obsoleto. "Acho que está obsoleto. Porque tinha que ser aplicado na hora em que se chega de ônibus. É ali que começam os xingamentos e caem os argumentos de que Vinicius é provocador. Não são casos isolados, como já dissemos há muito tempo. Não são 46 mil, mas também não são um ou dois. Duas horas antes já estavam insultando".

O que mais ele disse

Vini perdeu a esperança? "Não perdeu, não. Vamos ver a punição que ele terá (pela expulsão) e vamos avaliar, dando a ele mais ou menos dias de descanso. Se ele perder dois jogos, vou dar a ele uma semana de férias, para estar pronto contra o Athletic de Bilbao. Se ele perder um jogo, vai jogar em Sevilla".

Maior exposição de culpados. "É uma das medidas que podem ser tomadas. Em Valência, acho que não vão fazer isso. E se seguirmos essa linha, haverá muitos nomes e sobrenomes. Mas não pode ser a única medida, deixando isso claro".

Se arrepende de não ter mandado jogadores para os vestiários? "É algo que eu pensei, sim. Perguntei a ele se queria continuar, e o árbitro pediu para ele fazer isso. Então, essa possibilidade acabou aí. Mas é claro que é uma possibilidade. Espero nunca ter que fazer isso, porque não quero. Existe um juiz responsável por tomar essa decisão. Mas é uma possibilidade".