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

Trump quer controlar videogames violentos após massacres nos EUA

Presidente dos Estados Unidos, Donald Trump, ao lado do vice-presidente, Mike Pence, durante discurso sobre os massacres do fim de semana - Saul Loeb/AFP
Presidente dos Estados Unidos, Donald Trump, ao lado do vice-presidente, Mike Pence, durante discurso sobre os massacres do fim de semana Imagem: Saul Loeb/AFP

Do TAB, em São Paulo

07/08/2019 15h11

Depois de dois massacres no último fim de semana que deixaram 31 vítimas em El Paso, no Texas, e em Daytona, em Ohio, o presidente dos Estados Unidos, Donald Trump, afirmou em seu discurso na última segunda-feira (5) que é preciso que o país controle os "games que celebram a violência".

"Precisamos parar de glorificar a violência na nossa sociedade. Isso inclui games horríveis e medonhos que agora são comuns", disse Trump. Em sua fala, não deixou claro como seria o controle sobre os jogos, mas que é preciso impedir os jovens "problemáticos" de ficarem cercados por uma "cultura que celebra violência".

No Twitter, o presidente americano escreveu que a violência dos games e sua glorificação devem ser parados. "Estão criando monstros", publicou.

No entanto, ao contrário do que diz Trump, a ciência já provou que os jogos não causam massacres, nem doenças mentais (outro fator apontado pelo presidente como causa).

Em pesquisa recente divulgada no início deste ano na revista científica Royal Society Open Science, cientistas da Universidade de Oxford mostraram que não há relação entre o tempo que os jovens am jogando videogame e um eventual comportamento agressivo.

"A ideia de que os jogos violentos levam a agressões na vida real é popular", afirmou Andrew Przybylski, diretor do Instituto da Internet de Oxford. "A pesquisa mostrou que não há motivo para preocupação", completa. Segundo o estudo, não há evidência de que o hábito de jogar videogame esteja relacionado a comportamento violento por parte dos jovens.

Mesmo assim, até mesmo o vice-presidente brasileiro, Hamilton Mourão, já culpou os jogos pelo massacre de Suzano, ocorrido em março deste ano.

Os fatores que levam um jovem a praticar um massacre, no entanto, são diversos. O TAB se debruçou sobre o assunto na reportagem "A Psicologia do Massacre" sobre a tragédia na escola Rui Brasil, em Suzano (SP).

Fique por dentro de comportamento e cultura seguindo o TAB no Instagram e tenha conteúdos extras sobre inovação, tecnologia e estilo de vida.