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

Dado Dolabella critica Hortência por apoio ao hipismo e leva invertida

João Victor Marcari Oliva, filho de Hortência, durante prova do hipismo nas Olimpíadas - Alkis Konstantinidis/Reuters
João Victor Marcari Oliva, filho de Hortência, durante prova do hipismo nas Olimpíadas Imagem: Alkis Konstantinidis/Reuters

Colaboração para o UOL, em São Paulo

24/07/2021 12h47

A ex-jogadora de basquete Hortência publicou na tarde de hoje uma foto de seu filho, João Victor Oliva, para parabenizá-lo pela conquista da melhor nota da história do hipismo brasileiro nos Jogos Olímpicos. No entanto, o ator Dado Dolabella usou o espaço de comentários da publicação para lamentar o que classificou como "apoio a um esporte que utiliza animais".

"Melhor nota da história. Meta cumprida para @joaov_oliva. Time Brasil de adestramento em Tóquio. Parabéns, filho, você é muito merecedor. Evoluir sempre. Te amo", escreveu Hortência na legenda da publicação que foi contestada por Dado.

"Triste, Hortência, você apoiar esportes usando animais. Eles não estão aqui pra gente, estão aqui com a gente", escreveu Dolabella.

Dado Dolabella e Hortência discutem em publicação - Reprodução/Instagram - Reprodução/Instagram
Dado Dolabella e Hortência discutem em publicação
Imagem: Reprodução/Instagram

Hortência não deixou o comentário sem resposta e rebateu a declaração de Dado.

"Escolha não temos nós para ouvirmos tanta bobagem saindo da sua boca. (...) Impiedodso é você, seu ignorante, que desconhece o esporte e vem lacrar num dia tão especial pra minha família e para o esporte brasileiro. Vai arrumar confusão em outro lugar porque aqui não tem espaço pra pessoas incoerente, sem moral e que batem em mulher", criticou Hortência.

Hortência responde Dado Dolabella em sua publicação no Instagram - Reprodução/Instagram - Reprodução/Instagram
Hortência responde Dado Dolabella em sua publicação no Instagram
Imagem: Reprodução/Instagram

Primeiro cavaleiro brasileiro a competir nas Olimpíadas de Tóquio, João Victor Marcari Oliva ficou mais distante de uma vaga na final do adestramento individual. O atleta realizou sua apresentação ao som de Garota de Ipanema e terminou com 70.419 pontos

A pontuação atingida por João Victor foi melhor do que a que ele havia conseguido nos Jogos Olímpicos do Rio de Janeiro, em 2016, mas não deve ser suficiente para garantir um lugar entre os melhores