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

Flamengo

Final com Real Madrid tem torcida do Fla xingando Rodrygo e invasão

Torcedores do Flamengo comparecerem em peso na final do Mundial entre Real Madrid e Al Hilal - Arquivo pessoal
Torcedores do Flamengo comparecerem em peso na final do Mundial entre Real Madrid e Al Hilal Imagem: Arquivo pessoal

Do UOL, em Tânger

11/02/2023 19h12

Os torcedores do Flamengo que estiveram na final do Mundial entre Real e Al-Hilal marcaram de perto o brasileiro Rodrygo com vaias e xingamentos. A bronca veio depois de uma declaração do atacante do Real, que disse que já esperava pela eliminação dos cariocas na semifinal.

Na decisão de hoje, eles gritavam em alto em bom som: "Ei, Rodrygo, vai t...!", gerando um momento constrangedor até para as transmissões de TV no Brasil.

A polêmica entrevista

Mudança repentina da Fifa fez torcedores do Fla irem para o do Real Madrid

A FIFA mudou oficialmente o local da disputa de 3º só dois dias antes da partida, e prejudicou quem já havia seprogramado para assistir ao jogo em Rabat, onde inicialmente estava marcado.

"Eu desisti de ir para Tânger. Já estava com meu hotel em Rabat, teria mais custos com o deslocamento para Tânger... Preferi ficar e ter a oportunidade de assistir a um jogo do Real Madrid pessoalmente", disse ao UOL o carioca Rafael Oliveira, que estava com amigos que tomaram a mesma decisão.

Invasão e superlotação

Torcedores do Flamengo presentes na final do Mundial de Clubes relataram que presenciaram uma invasão de marroquinos sem ingressos no estádio. Segundo eles, tais pessoas pularam uma grade.

Como o jogo já tinha bilhetes esgotados, houve superlotação e até dificuldades para se arrumar um espaço na arquibancada. Outros que chegaram em cima da partida alegaram que foram barrados de entrar pela polícia mesmo com entradas, com o argumento da capacidade máxima atingida.

Promessa de serviço especial de trens não aconteceu

Numa tentativa de amenizar os transtornos, a Fifa anunciou que ofereceria um serviço especial de trens para quem quisesse ir à disputa de 3º e 4º lugares de Rabat para Tânger. No entanto, isso não aconteceu na prática.

O torcedor que chegava na estação de Rabat encontrava o mesmo serviço do restante da população, e tinha que pagar 189 dirhams (cerca de R$ 96) o trecho.

Ação coletiva contra a Fifa

Com tantos contratempos, torcedores do Flamengo já se organizaram para ingressar com uma ação coletiva contra a Fifa por conta dos prejuízos, uma vez que, inicialmente, o ingresso para hoje (11) era de rodada dupla, com a disputa de 3º e 4º e a final.

Flamengo