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

Covas faz campanha relâmpago e minimiza subida de Boulos em pesquisa

O prefeito de São Paulo e candidato à reeleição, Bruno Covas (PSDB), em ato de campanha na zona sul - Tiago Queiroz/Estadão Conteúdo
O prefeito de São Paulo e candidato à reeleição, Bruno Covas (PSDB), em ato de campanha na zona sul Imagem: Tiago Queiroz/Estadão Conteúdo

Felipe Pereira

Do UOL, em São Paulo

24/11/2020 14h13Atualizada em 24/11/2020 14h14

No mesmo dia em que o Datafolha mostrou um crescimento de cinco pontos percentuais de Guilherme Boulos (PSOL) na corrida eleitoral, o prefeito Bruno Covas (PSDB) minimizou o resultado da pesquisa durante uma visita relâmpago ao bairro Valo Velho, na zona sul de São Paulo.

Ele chegou um pouco antes do horário marcado, 13h, e fez uma visita não divulgada a uma paróquia da região. Na sequência, caminhou uma quadra, permaneceu cerca de 15 minutos com cabos eleitorais e foi embora.

Na conversava com a imprensa, Covas disse que não toma suas decisões de campanha por causa de pesquisas. O resultado do Datafolha desta terça mostra Boulos com 40%. Covas tem 48% e continua na frente, mas viu a diferença ser reduzida.

Na pesquisa encerrada na última quarta-feira (18), o tucano estava 13 pontos percentuais a frente. As entrevistas da pesquisa de hoje foram feitas ontem e mostram Covas oito pontos percentuais a frente. Contando somente os votos válidos, o resultado é 55% para o prefeito e 45% para Boulos.

"Vou continuar a campanha do jeito que a gente iniciou, falando dos temas da cidade de São Paulo. Em nenhum momento nós pautamos a nossa campanha por pesquisa eleitoral. Pesquisa indica um momento, pesquisa indica uma tendência, mas o importante é a eleição", disse Covas.

Durante a agenda de campanha, o prefeito contou com seu candidato a vice, Ricardo Nunes (MDB), que tem na zona sul um reduto eleitoral. Mais uma vez Covas precisou responder sobre se a imagem de agressor de mulheres está colando em Nunes. O relacionamento dele virou tema de campanha por causa de um boletim de ocorrência de violência doméstica registrado em 2011.

"Lamentável este tipo de notícia querendo associar o Ricardo, uma pessoa que tem oito anos de serviços prestados a comunidade, oito anos de trabalho reconhecido na região sul da cidade de São Paulo. Querer associar ele a uma pessoa agressiva é algo completamente descabido", defendeu.

O candidato do PSDB também precisou responder sobre a pandemia de covid-19. Ele voltou a negar que exista uma segunda onda e declarou que suas atitudes serão pautadas pelas recomendações da Vigilância Sanitária.

"Nós vamos continuar trabalhando ao lado da ciência na cidade de São Paulo. Importante dizer que, na quinta-feira ada [19], nós tivemos uma coletiva na Prefeitura que mostrou uma estabilidade em relação ao número de casos, mostrou uma estabilidade em relação ao número de óbitos na cidade de São Paulo", argumentou Covas.