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

Karoline Lima quer continuar narrando jogos após término: 'Parte de mim'

Karoline Lima pretende continuar narrando jogos de futebol no Instagram - Reprodução/Instagram
Karoline Lima pretende continuar narrando jogos de futebol no Instagram Imagem: Reprodução/Instagram

De Splash, em São Paulo

18/08/2022 08h00Atualizada em 18/08/2022 08h41

Karoline Lima fez sucesso com as narrações dos jogos do Real Madrid e da seleção brasileira enquanto namorava Éder Militão. O casal anunciou a separação poucos dias antes do nascimento da filha Cecília, mas a modelo não vê o término como um impeditivo para seguir narrando as partidas.

"Sempre amei futebol, não é algo que veio de agora por conta de relações. Faz parte de mim. Quando eu comecei a narrar, não foi falando somente da pessoa com quem eu tinha um relacionamento. E o público cobra", disse Karol em entrevista à Quem.

A influenciadora tem crescido cada vez mais nas redes sociais. No Instagram, é seguida por 3 milhões de pessoas e conta que é abordada nas ruas de Madrid, capital da Espanha.

"Minhas amigas dizem que todo mundo no Brasil sabe quem sou eu, e fico: 'como assim?'. Eu tive um crescimento exponencial nesses últimos tempos, mas não vi isso no Brasil. Aqui as pessoas me param, eu sou conhecida, mas não como no Brasil. Estou doida para voltar", afirma, comentando que está resolvendo a documentação da filha.

Entre os seguidores famosos está Georgina Rodriguez, namorada de Cristiano Ronaldo, que até comentou em uma publicação de Karol.

"Foi um surto coletivo. Vi a série dela na Netflix e a achei incrível, icônica. Alguém no Twitter me avisou que ela me seguia, e eu não fazia ideia. No Instagram eu fingi costume, mas estava surtando no Twitter. Fiquei chocada".

Recentemente, a influenciadora viralizou por manter o plástico em uma bolsa de grife de aproximadamente R$ 30 mil.

"Tem que zelar. Eu tenho muito cuidado, principalmente com coisas icônicas. Não comprei nenhuma roupa de luxo para Cecília até agora porque é muito dinheiro perdido [...] Mas a gente ganhou um vestidinho chiquérrimo da Dior da família Casemiro [jogador do Real Madrid e da seleção brasileira]. Já estou pensando num evento para usar, porque se perder esse vestido eu não vou me perdoar", contou a modelo.