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

Trevisan: Discurso 'antipolítica' cobrará custos nas próximas eleições

Do UOL, em São Paulo

25/09/2020 04h00

A menos de dois meses das eleições municipais, as pesquisas eleitorais já mostram o efeito da postura "antipolítica" que se tornou tendência nos pleitos do mundo todo nos últimos anos, avalia a colunista do UOL Carolina Trevisan no podcast Baixo Clero #58, apresentado nesta semana por Carla Araújo ao lado de Diogo Schelp.

"A gente percebe que os políticos que falam que são contra tudo que está acontecendo na política são cobrados depois, essa postura tem um preço", comenta Trevisan. (ouça a partir do minuto 34:40)

"Esses forasteiros, esses novos 'salvadores' neste momento das municipais não vão ter vantagem", conclui. (ouça a partir do minuto 37:39)

Diogo Schelp, colunista do UOL, concorda que a postura de "antipolítica" cobra no futuro, mas acredita que a afirmação não vale para políticos populistas ou que sejam eficientes no populismo.

"O político ainda no poder consegue manter o discurso de que ele é um 'outsider' e é esse o discurso que Jair Bolsonaro, por exemplo, está construindo", comenta. (ouça a partir de 39:15)

O presidente Bolsonaro vinha afirmando que não faria campanha para nenhum candidato no primeiro turno das eleições municipais, mas, nesta semana, assumiu que pode mudar de ideia e decidir apoiar algum candidato na eleição.

A chegada de Celso Russomanno (Republicanos) movimentou o cenário das eleições em São Paulo. Principalmente pela possibilidade de apoio presidencial. "Isso fez com que as pessoas imaginassem que essa vantagem de Russomanno estaria ligada ao presidente. Mas isso não é verdade", diz Trevisan. (ouça a partir de 34:40)

"O que acontece é que sempre Russomanno tem esse número alto no início da campanha, mas isso está muito ligado à memória da população", completa. (ouça a partir de 35:38)

Sobre a possibilidade de apoio a algum candidato por parte do presidente, o colunista Diogo Schelp acredita que Bolsonaro está colocando o pé na campanha.

"Conforme vai ficando claro que algum candidato tem mais chance, a tendência é ele entrar mais. Só a menção de que ele estaria apoiando alguém já tem um peso", comenta. "Talvez, por isso, Russomanno tenha nessa campanha um desempenho diferente de que ele teve em outros anos. Em outros anos, ele vinha muito bem e depois caía", completa.(ouça a partir de 38:29).

Na esteira do discurso de Jair Bolsonaro na ONU na terça-feira, o podcast também aborda as falácias preferidas pelo presidente e as atitudes da ministra da Mulher, da Família e dos Direitos Humanos, Damares Alves, no caso do aborto da menina de 10 anos estuprada pelo tio.

Baixo Clero está disponível no Spotify, na Apple Podcasts, no Google Podcasts, no Castbox, no Deezer e em outros distribuidores. Você também pode ouvir o programa no YouTube. Outros podcasts do UOL estão disponíveis em uol.com.br/podcasts.