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

Esse conteúdo é antigo

Tiroteios em comunidades do RJ deixam 4 mortos e 6 feridos

Confrontos em comunidades no RJ deixam 4 mortos e 6 feridos; PM apreende armas, carregadores, radiotransmissores e drogas no Morro dos Prazeres - CELSO BARBOSA/ESTADÃO CONTEÚDO
Confrontos em comunidades no RJ deixam 4 mortos e 6 feridos; PM apreende armas, carregadores, radiotransmissores e drogas no Morro dos Prazeres Imagem: CELSO BARBOSA/ESTADÃO CONTEÚDO

Do UOL, em São Paulo

27/04/2021 17h16Atualizada em 27/04/2021 17h17

Troca de tiros entre PMs e traficantes das comunidades do Rio de Janeiro deixaram ao menos quatro mortos e seis feridos, informou a Secretaria Municipal de Saúde e a Polícia Militar ao UOL. Os confrontos aconteceram nos bairros Morro dos Prazeres, Morro da Providência, Mangueira e Lins.

Entre os feridos, cinco apresentam estado de saúde estável, afirmou a Secretaria de Saúde. Os tiroteios começaram na noite de ontem e deixaram mortos o chefe de tráfico do Morro dos Prazeres, conhecido por Marcelinho dos Prazeres, e outro traficante, ainda não identificado.

Segundo a PM, em todos os confrontos, os policiais foram atacados por disparos de arma de fogo. Ainda no Morro dos Prazeres, uma mulher ficou feriado após ser atingida por uma bala perdida de raspão no pescoço. Outros três homens foram levados para o Hospital Municipal Souza Aguiar —um deles era traficante, diz a PM.

No Morro da Providência, o confronto aconteceu na manhã de hoje após equipes da UPP (Unidade de Polícia Pacificadora) e da P (Coordenadoria de Polícia Pacificadora) serem notificadas da presença de indivíduos armados em determinado ponto da comunidade.

"Ao tentar chegar no local indicado, os policiais foram atacados por disparos de arma de fogo e reagiram", informou a PM, que, após a troca de tiros, encontrou um homem ferido e apreendeu um artefato explosivo de fabricação caseira foi apreendido. A vítima foi socorrida ao Hospital Municipal Souza Aguiar.

Em Lins, segundo a PM, policiais da UPP também foram atacados por criminosos armados nesta manhã. Não há registro de feridos, prisões ou apreensões.

Na Mangueira, policiais também foram atacados por disparos de arma de fogo nas proximidades de uma das bases da UPP. "Na ação, um policial militar ficou ferido e foi socorrido ao Hospital Municipal Souza Aguiar, onde recebeu atendimento médico e apresenta estado estável". Também não houve prisões ou apreensões.