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

Guerra da Rússia-Ucrânia

Notícias do conflito entre Rússia e Ucrânia


Esse conteúdo é antigo

Ataque russo a complexo residencial deixa idosas ucranianas feridas

Do UOL, em São Paulo

24/02/2022 10h46Atualizada em 24/02/2022 14h03

Um complexo de apartamentos em Chuhuiv, cerca de 530 km de Kiev, capital da Ucrânia, foi alvo de um ataque aéreo hoje durante a ofensiva russa ao país vizinho e deixou idosas feridas. Uma das imagens, com uma mulher ensanguentada, se tornou uma das mais marcantes registradas neste início de invasão. A Rússia havia prometido não atacar civis, antes da invasão ao país vizinho, iniciada nesta madrugada.

Um vídeo publicado nas redes sociais mostra os bombeiros tentando apagar um incêndio em uma das residências enquanto uma senhora fala ao celular do lado de fora do edifício. Fotos impressionantes também mostram uma senhora loira com a cabeça enfaixada e coberta de sangue, do lado de fora do prédio. Ela ainda não foi identificada.

Segundo guardas de fronteira ucranianos, as forças russas entraram na região do norte de Kiev a partir de Belarus para executar um ataque com mísseis contra alvos militares. No entanto, em Chuhuiv, cenas mostram que civis ficaram feridos e casas foram destruídas após a operação.

guerra - Wolfgang Schwan/Anadolu Agency via Getty Images - Wolfgang Schwan/Anadolu Agency via Getty Images
Uma mulher ferida é vista após um ataque aéreo que danificou um complexo de apartamentos na cidade de Chuhuiv
Imagem: Wolfgang Schwan/Anadolu Agency via Getty Images

Além do ataque em Chuhuiv, o comando militar da Ucrânia disse que 4 pessoas morreram e 10 ficaram feridas após um projétil russo atingir um hospital em Vuhledar, no leste da Ucrânia, a 311 km de Chuhuiv e 741km de Kieve. Entre os feridos estão seis médicos.

A ação russa na Ucrânia teve início na madrugada de hoje (no horário de Brasília). Após o início das mobilizações russas, houve registro de explosões e ataques a unidades de fronteiras ucranianas, além de movimentações de tanques. As ofensivas da Rússia fizeram as sirenes de emergência dispararem na Ucrânia e o presidente Volodymyr Zelensky adotar lei marcial no país.

Mapa Ucrania - Arte/ UOL - Arte/ UOL
Imagem: Arte/ UOL

Putin deu sinal verde a 'operação militar especial'

Os ataques da Rússia começaram após o presidente Vladimir Putin, ter dado sinal verde àquilo que definiu como "operação militar especial" da Rússia no leste da Ucrânia e mandar recado para aqueles que tentarem intervir. O anúncio foi feito por Putin, na noite de ontem, durante um pronunciamento transmitido em cadeia nacional.

Tomei a decisão de conduzir uma operação militar especial. Nossa análise concluiu que nosso confronto com essas forças [ucranianas] é inevitável (...) Algumas palavras para aqueles que seriam tentados a intervir: a Rússia responderá imediatamente e você terá consequências que nunca teve antes em sua história.

Vladimir Putin, ao anunciar a operação militar na Ucrânia

Putin descreveu a medida como uma resposta às ameaças ucranianas e disse que visa a "desmilitarização e a desnazificação".

apto - Wolfgang Schwan/Anadolu Agency via Getty Images - Wolfgang Schwan/Anadolu Agency via Getty Images
Bombeiros ucranianos chegam para resgatar civis depois que um ataque aéreo atingiu um complexo de apartamentos em Chuhuiv,
Imagem: Wolfgang Schwan/Anadolu Agency via Getty Images