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

Torcida apoia Brasil antes de treino no Recife: 'Ih, f..., Neymar apareceu'

Aglomeração de torcedores na saída do hotel da delegação da seleção brasileira no Recife - UOL
Aglomeração de torcedores na saída do hotel da delegação da seleção brasileira no Recife Imagem: UOL

Gabriel Carneiro

Do UOL, em Pernambuco

08/09/2021 16h44

Os jogadores da seleção brasileira receberam apoio de torcedores antes do treino de hoje (8), na Arena de Pernambuco. Centenas de pessoas se aglomeraram na saída do hotel onde a delegação está hospedada no Recife para dar incentivo ao grupo, que tem atividades marcadas para o fim da tarde no palco do jogo de amanhã, às 21h30, contra o Peru, pela décima rodada das Eliminatórias da Copa do Mundo do Qatar.

Polícia Militar e equipe de segurança do hotel Grand Mercure Recife Boa Viagem isolaram cerca de 20 metros para frente e para trás da portaria do hotel, então apenas hóspedes e pessoas autorizadas tiveram contato mais próximo com os jogadores, com quem tiraram fotos e colheram autógrafos. À distância, o elenco deu saudações e ouviu as palavras de apoio dos torcedores para além do isolamento.

Daniel Alves foi o primeiro jogador a embarcar no ônibus da seleção. Matheus Cunha chegou a jogar um boné para os torcedores e Tite atirou uma camisa. Algumas pessoas exibiam faixas pedindo fotos com jogadores específicos, sendo Neymar o mais exaltado nos pedidos de selfies e cantos da torcida: "Olê, olê, olê, olá, Neymar, Neymar" e "Ih, f..., o Neymar apareceu". Gabigol, Gérson, Hulk e Tite também tiveram o nome cantado com força nos arredores do hotel.

No condomínio em frente ao hotel alguns influenciadores digitais, como Ney Silva e Eduardo Semblano, também ganharam atenção dos jogadores com fotos e acenos.

O embarque dos jogadores durou cerca de 20 minutos. Assim que o ônibus partiu, o isolamento e a aglomeração foram desfeitos. A seleção treina na Arena Pernambuco às 17h30 e depois volta para o hotel.

Ônibus - Gabriel Carneiro/UOL - Gabriel Carneiro/UOL
Ônibus com jogadores e estafe deixa a rua do hotel Grand Mercure Recife Boa Viagem
Imagem: Gabriel Carneiro/UOL
Ônibus 2 - Gabriel Carneiro/UOL - Gabriel Carneiro/UOL
Ônibus com jogadores e estafe deixa a rua do hotel Grand Mercure Recife Boa Viagem
Imagem: Gabriel Carneiro/UOL