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

Carlos Bolsonaro critica BB por retirar propaganda de site bolsonarista

Carlos Bolsonaro discursando - Foto: Divulgação/CMRJ
Carlos Bolsonaro discursando Imagem: Foto: Divulgação/CMRJ

Gregory Prudenciano

Em São Paulo

20/05/2020 16h54

O vereador do Rio de Janeiro Carlos Bolsonaro (Republicanos) criticou o Banco do Brasil no Twitter depois que a instituição financeira optou por retirar anúncios de um site bolsonarista.

Para o segundo filho do presidente da República, Jair Bolsonaro (sem partido), a decisão do Banco do Brasil de retirar anúncios do site Jornal da Cidade Online "pisoteia em mídia alternativa que traz verdades omitidas".

"Não falarei nada pois dirão que estou atrapalhando... agora é você ligar os pontinhos mais uma vez e eu apanhar de novo, com muito orgulho. Obs: não conheço ninguém do Jornal da Cidade Online", tuitou.

A decisão do banco estatal de não mais anunciar no site foi comunicada também no Twitter, em resposta ao perfil Sleeping Giants Brasil, que se ocupa de pressionar empresas para que não anunciem em sites que difundem notícias falsas e desinformação.

"Oii, Banco do Brasil, tudo bem? Realmente é bom ter a facilidade de usar um app em tempo de pandemia, mas não precisava anunciá-lo em um site conhecido por espalhar fake news e que é contra o isolamento social. Pls considere bloquear", tuitou o Sleeping Giants Brasil, com uma captura de tela do anúncio.

"Agradecemos o envio da informação, comunicamos que os anúncios de comunicação automática foram retirados e o referido site bloqueado. Repudiamos qualquer disseminação de fake news", respondeu o perfil oficial do banco brasileiro.

Conta do presidente da República

A crítica de Carlos Bolsonaro, no entanto, foi publicada, apagada e republicada. Isso porque a primeira postagem trazia uma captura de tela do diálogo entre a Sleeping Giants e o Banco do Brasil na qual era possível ver que o vereador estava logado na conta do presidente da República quando fez a captura. Usuários questionaram Carlos Bolsonaro, que confirmou o o ao perfil do pai presidente.

"Sim. Havia printado de sua conta. E qualquer imbecil sabe que tenho o a ela. Agora corrigido. Quanto a lacração, se fosse mais inteligente, talvez entenderia o que quero dizer", explicou Carlos.

Também no Twitter, o chefe da Secretaria Especial de Comunicação do governo federal (Secom), Fabio Wajngarten, saiu em defesa do site bolsonarista.

"Os jornais independentes são muito importantes e devem ser valorizados no exercício da liberdade de expressão. O Sleeping Giants Brasil precisa urgentemente deixar o viés ideológico de lado na hora de fazer suas supostas denúncias. Dormiram no ponto e acabaram mostrando a quem servem", defendeu o chefe da Secom.

Sleeping Giants Brasil

A versão brasileira da Sleeping Giants emula uma iniciativa homônima surgida nos Estados Unidos pelas mãos de Matt Rivitz, um publicitário que decidiu criar a conta no Twitter para constranger empresas cujos anúncios ajudam a financiar sites da extrema-direita americana. A conta no Twitter surgiu em novembro de 2016, e agora há versões em diversos países.

A conta brasileira foi criada em maio de 2020 e tem até o momento 23,4 mil seguidores. Na descrição do perfil aparece a frase:

"Tentamos impedir que sites racistas ou de fake news monetizem através da publicidade. Muitas empresas não sabem que isso acontece, é hora de contar a elas."