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

Pela 3ª vez, Manuela D'Ávila perde, em campanha minada por fake news

Hygino Vasconcellos

Colaboração para o UOL, em Porto Alegre

29/11/2020 18h53Atualizada em 30/11/2020 07h11

A jornalista Manuela D'Ávila (PCdoB), 39, foi derrotada hoje nas urnas pelo adversário Sebastião Melo (MDB), 62, no segundo turno das eleições municipais de Porto Alegre. Foi a terceira tentativa da ex-deputada de comandar a Prefeitura de Porto Alegre. Desde 2018, quando concorreu ao cargo de vice-presidente da República ao lado de Fernando Haddad (PT), Manuela estava sem mandato.

No sábado (28), a candidata chegou a aparecer à frente em pesquisa Ibope, ainda assim tecnicamente empatada com Melo.

A campanha de Manuela foi marcada por uma série de fake news, contra as quais ela ingressou na Justiça Eleitoral. No primeiro turno, ela conseguiu retirar 91 links com mentiras sobre si.

Entre as postagens, há uma que chega a relacionar falsamente D'Ávila ao autor da facada contra Jair Bolsonaro (sem partido) em 2018, Adélio Bispo de Oliveira. Já no segundo turno, Manuela conseguiu derrubar mais de 70 mil compartilhamentos de notícias falsas publicadas no Facebook e Twitter, de 59 links de postagens.

Em pronunciamento, ela salientou que enfrentou uma "campanha muito difícil" e uma das eleições "mais baixas da história".

Também disse que "falar a verdade vale a pena" e agradeceu a família. "Não é fácil fazer escolhas no Brasil, mas fica mais fácil quando se tem amor do lado."

O primeiro dos fatores a explicar a queda de Manuela é a aliança feita com o PT, que aceitou abrir mão da cabeça de chapa —algo que nunca havia ocorrido— para colocar Miguel Rossetto (PT) de vice. Com histórico de bom desempenho na capital gaúcha (elegeu por quatro vezes o prefeito) e no Rio Grande do Sul (foi governo por duas vezes), a sigla ou a ter alta rejeição desde o impeachment de Dilma Rousseff, em 2016.

O alinhamento com o PT acabou ruindo uma aliança com outros partidos de esquerda já no primeiro turno, com o PSOL de Fernanda Melchionna e o PDT de Juliana Brizola —ambas também disputaram neste ano as eleições em Porto Alegre. Apesar do apoio dessas legendas na reta final, Manuela não conseguiu votos suficientes para vencer.

Outro motivo seria a falta de apoio entre evangélicos. Pesquisas de primeiro turno já indicavam que Manuela não tinha tanto e desta parcela da população.

Este, segundo os números, era o domínio de José Fortunati (PTB), que deixou a corrida eleitoral após a impugnação da candidatura do seu vice, registrado após o prazo legal. Com a saída dele da disputa, Melo acabou "herdando" os votos desta faixa do eleitorado.

Você utiliza a Alexa? O UOL é o parceiro oficial da assistente de voz da Amazon, com boletins de notícias e dados atualizados das últimas pesquisas eleitorais e dos resultados do 2º turno. Para saber sobre a eleição na sua cidade com a credibilidade do UOL, pergunte: "Alexa, qual é o resultado da pesquisa eleitoral em São Paulo?", por exemplo, ou "Alexa, quem ganhou a eleição no Rio de Janeiro?". Nos encontramos lá!