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

Josias de Souza

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Avanço de Haddad ensina a Tarcísio que a eleição vem antes do secretariado

Colunista do UOL

25/10/2022 21h16

Receba os novos posts desta coluna no seu e-mail

Email inválido

Superando as melhores expectativas e as as piores estatísticas, o bolsonarista Tarcísio de Freitas saiu das urnas do primeiro turno em São Paulo com 6,6 pontos percentuais de dianteira sobre o rival petista Fernando Haddad. Cheio de si, ou a flertar com o vazio. Esnobou um debate. Escalou antes da hora futuros auxiliares. Na nova pesquisa do Ipec, Haddad encostou no rival. E Tarcísio descobriu que, assim como no dicionário, também na campanha a eleição vem antes do secretariado.

Segundo o Ipec, Tarcísio (46%) está três pontos à frente de Haddad (43%). A margem de erro da pesquisa é de dois pontos, para o alto ou para baixo. Ou seja, a dupla está tecnicamente empatada. No âmbito estadual, a disputa pelo Palácio dos Bandeirantes é um reflexo quase perfeito da corrida pelo Planalto. Em São Paulo, Bolsonaro coleciona 47% das intenções de voto. Lula, 44%.

O Ipec mostra que o jogo não está jogado no maior colégio eleitoral do país. Parte do eleitorado torce o nariz para propostas que Tarcísio levou à vitrine. Entre elas a ideia de privatizar a Sabesp e de retirar as câmeras dos uniformes dos policiais.

O apoio dado a Tarcísio pelo governador paulista Rodrigo Garcia, um tucano com pedigree do falecido DEM, parece menos relevante do que a aliança que uniu Haddad a Geraldo Alckmin, um ex-tucano que não perdeu a plumagem conservadora que o eleitor do interior aprecia.

De resto, enquanto os pesquisadores do Ipec realizavam as entrevistas, uma polêmica nova ganhou as manchetes. Áudio veiculado pela Folha revela que um integrante da campanha de Tarcísio mandou um cinegrafista da Jovem Pan apagar imagens do tiroteio ocorrido durante visita do candidato de Bolsonaro a Paraisópolis.

Houve uma morte. A campanha de Bolsonaro explorou o episódio na propaganda eleitoral como um "atentado" político. Os desdobramentos podem ser corrosivos. O interesse em sumir com as filmagens envolve censura e a suspeita de obstrução de uma investigação policial.

A cinco dias da eleição, Tarcísio continua mais próximo da vitória do que Haddad. Entretanto, o candidato bolsonarista talvez já tenha percebido que a soberba não dá voto. É o caminho mais longo entre a eleição e o Poder. É mais difícil chegar ao trono quando o candidato imagina já estar sentado nele.

O UOL News vai ao ar de segunda a sexta-feira em três edições: 8h, 12h e 18h, sempre ao vivo.

Quando: de segunda a sexta às 8h, 12h e 18h.

Onde assistir: Ao vivo na home UOL, UOL no YouTube e Facebook do UOL. Veja a íntegra do programa: