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

Militares da Rússia em Belarus avançam em direção a Kiev, diz Reino Unido

Do UOL, em São Paulo

24/02/2022 14h51Atualizada em 24/02/2022 16h14

O Ministério da Defesa do Reino Unido afirmou hoje que os militares da Rússia em Belarus estão avançando em direção a Kiev, capital da Ucrânia, horas após Vladimir Putin determinar a invasão no país vizinho.

Belarus fica ao norte da Ucrânia e, até agora, os ataques têm se concentrado mais ao sul do país. Segundo o comunicado divulgado pela pasta nas redes sociais, as forças russas conduziram ataque aéreo a um aeródromo nos arredores de Kiev.

Ainda de acordo com autoridades britânicas, os ataques foram realizados por meio de "uma combinação de mísseis russos lançados por terra, ar e mar e por bombardeio de artilharia". A ofensiva, diz o Reino Unido, teve como alvos as infraestruturas militares da Ucrânia.

"Grandes baixas foram sofridas em ambos os lados, embora os números exatos ainda não sejam claros", completa a nota do Ministério da Defesa do Reino Unido.

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

Ataques russos deixaram civis mortos e feridos

Ao menos 67 pessoas, entre civis e militares, morreram após o avanço das tropas russas na Ucrânia, informaram um assessor presidencial e autoridades regionais. Na madrugada de hoje, o presidente russo, Vladimir Putin, deu sinal verde para o que definiu como "operação militar especial" contra a Ucrânia. O governo ucraniano diz que a ação é uma "invasão total".

Segundo o comando militar ucraniano, disparos de projéteis russos contra um hospital na região de Donetsk deixaram pessoas mortas. Outras 10 pessoas ficaram feridas, entre elas seis médicos.

Donestk foi uma das regiões tomadas por rebeldes pró-Rússia reconhecidas pelo presidente russo, Vladimir Putin, como território independente na segunda-feira (21).

Outro bombardeio durante a madrugada, dessa vez na cidade de Chuhuiv, a 530 quilômetros de Kiev, deixou pelo menos um morto. A vítima é uma criança que estava em um prédio de cinco andares atingido durante o ataque, ainda que a Rússia houvesse dito que não haveria ataques a civis ucranianos.

Nessa mesma cidade, um complexo de apartamentos foi alvo de um ataque aéreo 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.