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

Alberto Bombig

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Crescimento de Rodrigo fará dele alvo preferencial em SP, preveem campanhas

Colunista do UOL

16/09/2022 11h38Atualizada em 16/09/2022 11h38

O bom desempenho do governador Rodrigo Garcia (PSDB) na mais recente pesquisa Datafolha está provocando mudanças imediatas nas estratégias de campanha dos principais candidatos ao governo de São Paulo.

Conforme ficou evidente no debate da TV Cultura, UOL e Folha na terça-feira (13), Fernando Haddad (PT) e Tarcísio Gomes de Freitas (Republicanos) parecem dispostos a manter um certo armistício para irem juntos para o segundo turno e, assim, repetir a polarização nacional entre Lula (PT) e Jair Bolsonaro (PL).

Segundo apurou a coluna com integrantes das principais campanhas, a partir de agora, com o crescimento de Rodrigo, essa "dobradinha" deverá se intensificar para atacar o governador do estado, considerado um adversário difícil de ser batido no segundo turno por setores importantes do PT. No caso de Tarcísio, o candidato de Bolsonaro, a lógica é simples: se ele não parar o tucano, ficará fora da fase decisiva da eleição.

De acordo com a pesquisa, divulgada nesta quinta-feira (15), Haddad mantém a liderança na disputa pelo primeiro turno com 36% das intenções de voto. Tarcísio oscilou de de 21% para 22%, enquanto Rodrigo subiu de 15% para 19% e está tecnicamente empatado com o candidato de Jair Bolsonaro.

O resultado foi muito comemorado na campanha do PSDB, que está preocupado se haverá tempo necessário daqui até 2 de outubro para o governador ultraar Tarcísio e chegar ao segundo turno. O partido tenta manter uma hegemonia em São Paulo que vem desde 1995 (com breves interrupções quando vices de outros partidos assumiram o Bandeirantes).

Outro motivo de otimismo entre os tucanos: eles avaliam que a mais recente rodada do Datafolha ainda não captou todos os efeitos dos eventuais estragos da agressão do deputado estadual bolsonarista Doulglas Garcia (Republicanos-SP) à jornalista Vera Magalhães, da TV Cultura.

No PT, cresceu a pressão sobre o comando da campanha de Haddad para que ele seja mais incisivo, inclusive nos programas de televisão, nas críticas à atual gestão tucano no estado. A ideia é reforçar o vínculo entre João Doria, antecessor de Rodrigo, e o atual governador, mesma estratégia que deverá ser usada por Tarcísio.

De seu lado, Rodrigo ainda manterá parte da estratégia de se apresentar ao eleitor paulista porque a avaliação de sua gestão vem melhorando e a rejeição está viés de baixa. Porém, ele insistirá em apontar Haddad como um prefeito fraco quando comandou a capital paulista e em reforçar elos de Tarcísio com os extremismos de Bolsonaro, como o machismo, por exemplo. Como mostrou a coluna, a campanha tucana já havia previsto subir o tom contra os adversários ainda em agosto.