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

Menino de 13 anos é morto com 15 tiros ao buscar primo de moto no RJ

David Rodrigues ajudava na comemoração do aniversário da mãe; família acredita em engano - Arquivo Pessoal
David Rodrigues ajudava na comemoração do aniversário da mãe; família acredita em engano Imagem: Arquivo Pessoal

Daniele Dutra

Colaboração para o UOL, no Rio de Janeiro

26/07/2021 20h14Atualizada em 26/07/2021 20h37

Um menino de 13 anos foi morto com 15 tiros na noite de ontem na zona rural de São Francisco de Itabapoana, cidade na região da Costa Doce do Rio de Janeiro.

Segundo a família, David de Souza Rodrigues estava indo buscar um primo de moto para o aniversário da mãe, em uma rua próxima à casa da família, mas acabou sendo alvejado a apenas 500 metros da residência.

Os familiares, que dizem ter a teoria apoiada pela polícia, acreditam que os dois homens que atiraram no adolescente, fugindo de moto, tenham confundido David com outra pessoa. O enterro do menino aconteceu na tarde de hoje, e as investigações estão sob responsabilidade da 147ª DP.

Em entrevista ao UOL, o pescador Nasme das Neves Rodrigues, pai de David, conta que foi ele quem pediu ao filho para buscar o primo horas antes da comemoração do aniversário de Fabiane de Souza, mãe de David.

O adolescente saiu de casa por volta das 19h15 e minutos depois a mãe do garoto ouviu vários disparos. Preocupada, ela ligou na mesma hora para o sobrinho, perguntando se David já tinha chegado lá.

Após uma negativa do jovem, Fabiane e a família saíram de casa para averiguar se o garoto estava por perto. Eles avistaram duas motos no final da rua e, a 500 metros de casa, viram o garoto caído no chão.

"Na hora eu achei até que ele tivesse batido em alguma árvore. O coração estava batendo ainda, mas aí eu vi que ele tinha um buraco no ombro. Corremos com ele, mas já chegou morto no hospital. Meu filho morreu por engano, deu a vida dele pra salvar a de quem devia", lamentou o pai de David.

A família, que afirma que a região sempre foi tranquila, destaca acreditar que o adolescente tenha sido morto por engano.

"Meu menino tinha só treze aninhos. Era brilhante, estudava, já trabalhava pescando, criava porquinho, bezerro. Me ajudava muito. Era um ótimo filho. Agora nós queremos justiça. Ninguém pode tirar a vida de ninguém se não puder dar", declarou o pai.

O enterro de David aconteceu na tarde de hoje no cemitério da região.

Em nota, a Assessoria de Imprensa da Polícia Militar disse que no domingo (25), policiais militares do 8º BPM, de Campos dos Goytacazes, foram acionados para verificar a entrada de uma pessoa ferida em uma unidade de saúde localizada no município de São Francisco de Itabapoana.

"A situação foi constatada no hospital e o fato teria ocorrido no bairro Lagoa Feia, em São Francisco de Itabapoana. A ocorrência encaminhada para a 147ª DP", concluiu a nota.

Já a Polícia Civil disse que as investigações estão em andamento em busca de testemunhas e informações que ajudem a identificar a autoria do crime. Até o momento, ninguém foi preso.

A delegada responsável pelas investigações, Ivana Morgado, declarou que "a investigação ainda está no início e as informações sobre os fatos estão sendo colhidas".

Ela disse ainda que a expectativa é de que ao longo da semana surjam mais informações sobre o crime e que as autoridades estão fazendo diligências em busca dos responsáveis. Ainda segundo ela, David não tinha nenhum antecedente criminal.