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

Rio: Turistas se agacham durante ventania no Cristo Redentor; veja o vídeo

Do UOL, no Rio

21/09/2021 18h48

Turistas que visitavam o Cristo Redentor na tarde de hoje tentaram se proteger da ventania que atingiu o Rio de Janeiro (veja o vídeo acima). De acordo com a prefeitura, foram registradas rajadas de até 76 km/h na cidade.

Nas imagens, turistas se agacham na tentativa de se refugiarem do vento forte. Alguns "engatinham" para evitar ficar em pé, outros chegam a deitar. Não há registro de vítimas.

De acordo com o Trem do Corcovado, a circulação do veículo até o ponto turístico ficou interrompida por cerca de uma hora, no auge da ventania. Há relatos de que alguns grupos se protegeram em uma lanchonete que fica no local.

Mais cedo, um vídeo de um homem andando "contra o vento" foi publicado nas redes sociais, também no Cristo Redentor.

Ventania afetou transportes no Rio

Houve registro de ao menos 30 quedas de árvore na capital. A prefeitura decretou "estágio de mobilização". A Supervia, concessionária que istra os trens do Rio, interrompeu a circulação por conta dos ventos fortes às 15h02, por "risco às estruturas da ferrovia".

Às 17h40, estava a normalizada a operação no ramal Japeri, apenas no trecho entre Central e Nova Iguaçu, no ramal Santa Cruz, interligado ao ramal Deodoro, e no ramal Belford Roxo.

Antes, a Ecoponte, que istra a Rio-Niterói, interrompeu o fluxo na via por 30 minutos, com liberação às 15h10.

Táxi é atingido por poste e motorista escapa

No centro do Rio, ao lado do Theatro Municipal, um poste caiu em cima de um táxi estacionado. Taxista há 35 anos, Mauro Gonçalves da Gama, 59, disse que por sorte não estava dentro do veículo, na rua Treze de Maio.

O poste, que segundo ele é de uma operadora de telefonia, foi derrubado pelo vento e atingiu a frente do veículo, quebrando o vidro frontal e amassando o teto do táxi.

Eu costumo ficar sempre dentro do carro, mas estava na esquina em pé. Na hora [a chance de estar no táxi no momento do acidente] foi a única coisa que pensei. Fiquei com a imagem do poste caindo na minha cabeça."
Mauro Gonçalves da Gama, taxista

"Não sei como, mas vou me virar. Graças a Deus tenho um amparo por trás", disse.

Estágio de mobilização e previsão de chuva fraca

O estágio de mobilização é o segundo em uma escala que vai até cinco e é acionado quando há "riscos de ocorrências de alto impacto na cidade". Nessas condições, "ainda não há impactos na rotina da cidade, mas os cidadãos devem se manter informados".

De acordo com o Centro de Operações, ainda hoje há possibilidade de nova mudança de estágio devido à chuva ou a outros fatores.