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

Bolsonaro ataca imprensa após demissões de jornalistas conservadores

Presidente Jair Bolsonaro (sem partido) atacou imprensa nas redes sociais - Reprodução/YouTube
Presidente Jair Bolsonaro (sem partido) atacou imprensa nas redes sociais Imagem: Reprodução/YouTube

Do UOL, no Rio

11/07/2020 21h05

O presidente Jair Bolsonaro (sem partido) abandonou o tom conciliador adotado nas últimas semanas e usou as redes sociais para atacar a imprensa na noite deste sábado (11). Ele reclamou das críticas que comentaristas notoriamente alinhados a seu governo têm sofrido nos últimos dias por declarações consideradas inadequadas.

No Twitter, ele saiu em defesa dos jornalistas Leandro Narloch e Luís Ernesto Lacombe —que deixaram, respectivamente a CNN e a Band— e dos comentaristas Rodrigo Constantino, da rádio Jovem Pan, e Caio Coppolla, também da CNN.

"Luís Lacombe, Leandro Narloch, Caio Coppolla e Rodrigo Constantino possuem algo em comum, que é opinião própria e independência. Isso já é suficiente para serem considerados nocivos dentro de grande parte da mídia, hoje completamente dominada pelo pensamento de esquerda radical", escreveu o presidente.

Nesta semana, Narloch foi demitido da CNN após afirmar no ar que "homens gays têm muito mais chance de ter AIDS" e usar o termo "opção sexual" —considerado homofóbico pela população LGBT— ao tratar do assunto.

Já Lacombe deixou a apresentação do "Aqui na Band" após provocar insatisfação por exibir pautas consideradas parciais a favor do governo Bolsonaro. Antes de deixar o canal, ele levou ao ar uma discussão com o mote de "Quem mandou matar Bolsonaro?", apesar de investigações da Polícia Federal terem concluído que não houve mandante no episódio da facada levada pelo presidente em 2018.

Também levou ao ar uma entrevista com o blogueiro Allan dos Santos, do site Terça Livre, investigado pelo STF (Supremo Tribunal Federal) no inquérito das fake news.

Coppolla e Constantino, por sua vez, têm sido alvo de reclamações nas redes sociais por um posicionamento considerado alinhado ao governo pelos críticos. Integrante do quadro "O Grande Debate", Coppolla viu mais um colega —o advogado Augusto de Arruda Botelho— deixar a atração após seguidos desentendimentos com ele no ar. O mesmo já havia ocorrido com a jurista Gabriela Priolli.

Bolsonaro vinha evitando declarações controversas nas redes sociais desde que Fabrício Queiroz —ex-assessor de seu filho Flávio Bolsonaro e seu amigo desde 1984— foi preso, em 18 de junho. Queiroz foi encontrado pelo MP-RJ (Ministério Público do Rio) em um imóvel do advogado Frederick Wassef em Atibaia (SP). Além de defender Flávio na investigação sobre a suposta rachadinha em seu gabinete na Alerj (Assembleia Legislativa do Rio), Wassef se apresentava como advogado do presidente, com quem tinha interlocução e mantinha constantes encontros em Brasília.