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

Bruna Biancardi deseja forças a Neymar após lesão ligamentar: 'Vai voltar'

Neymar e Bruna Biancardi namoraram por mais de um ano  - Reprodução/Instagram
Neymar e Bruna Biancardi namoraram por mais de um ano Imagem: Reprodução/Instagram

Colaboração para Splash, no Rio de Janeiro

25/11/2022 17h28

A ex-namorada de Neymar, Bruna Biancardi, de 28 anos, desejou melhoras ao jogador de futebol da seleção brasileira em razão da lesão ligamentar no tornozelo direito e o edema ósseo que sofreu no jogo de estreia do Brasil contra a Sérvia na Copa do Mundo do Qatar.

Nos comentários de uma publicação no Instagram do atacante, a influenciadora digital escreveu uma mensagem positiva para o ex-amado, com quem mantém uma relação de amizade após o fim do relacionamento. Embora Neymar esteja cortado dos próximos jogos, da fase de grupos, para realizar o tratamento, Bruna afirmou que o atleta irá voltar mais forte para a competição.

"É isso, lindo! Você vai voltar logo e muito mais forte. Estamos com você!", disse Bruna, que acrescentou um coração de emoji na mensagem.

A influenciadora digital chegou a ir ao Qatar antes do início da Copa do Mundo. Depois, ela seguiu viagem para um resort de luxo nas Ilhas Maldivas. No país do Oriente Médio, Bruna revelou assédio nas ruas.

"Me senti segura. Não andei sozinha, sempre acompanhada, mas todos foram muito respeitosos e educados por lá. Tive medo no primeiro dia que andei por Doha por ser um lugar que eu não conhecia. Apesar de mexerem com as mulheres, não é nada desrespeitoso como aqui no Brasil. É mais para chamar a atenção e você entrar nas lojas. Deixem o airdrop desligado porque eles mandam uma foto com o link do WhatsApp deles", ressaltou ela.

Bruna e Neymar estiveram em um relacionamento por mais de um ano, mas o envolvimento chegou ao fim em agosto deste ano. No entanto, os dois continuam amigos e, no mês ado, o ex-casal se reencontrou em Paris, na França. "Amor incondicional", escreveu o camisa 10 da seleção brasileira ao posar do lado da influenciadora digital.