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

Sem apoio de lideranças, França e Tatto buscam apoio na base evangélica em São Paulo

Os candidatos à Prefeitura de São Paulo Marcio França (PSB) (foto) e Jilmar Tatto (PT) adotaram a estratégia de dialogar diretamente com as bases das igrejas - Divulgação
Os candidatos à Prefeitura de São Paulo Marcio França (PSB) (foto) e Jilmar Tatto (PT) adotaram a estratégia de dialogar diretamente com as bases das igrejas Imagem: Divulgação

Ricardo Galhardo e Paula Reverbel

20/10/2020 07h59

Os candidatos à Prefeitura de São Paulo Marcio França (PSB) e Jilmar Tatto (PT) adotaram a estratégia de dialogar diretamente com as bases das igrejas, em vez das cúpulas, na garimpagem pelos votos do eleitorado evangélico paulistano.

Ontem, França recebeu apoio de 500 líderes religiosos de igrejas como Assembleia de Deus, Universal, Presbiteriana e Batista em ato pluripartidário realizado no Parque São Jorge, no Tatuapé, zona leste. Tatto assinou uma carta de compromisso com os evangélicos em um ato na quadra do Sindicato dos Bancários.

Os dois ocupam respectivamente a quarta e quinta colocações, segundo o Ibope. Os evangélicos representam cerca de 30% do eleitorado brasileiro.

"Cada um deles têm duas, três, cinco, oito, dez igrejas? Não são os grandes. Os principais líderes nacionais e estaduais já têm seus candidatos a vereadores e têm vínculo com o governo do Bruno (Covas, atual prefeito)", afirmou França, sobre sua aproximação com os líderes religiosos.

Tatto assinou uma carta de compromisso articulada pelo Movimento de Evangélicos e Evangélicas em apoio à sua candidatura. A ideia é mostrar que o legado do PT na cidade atende a diversos pontos da pauta evangélica.

Segundo a carta, realizações como o Bilhete Único, corredores de ônibus e o Programa Almoço e Janta atendem aos valores cristãos como a valorização da família. "Buscamos estabelecer um diálogo através de programas que têm a preocupação com a família como centro", disse o coordenador da campanha, Laércio Ribeiro.

As informações são do jornal O Estado de S. Paulo.