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

Líder em 90% das zonas, Paes vai melhor no Leblon, e Crivella na periferia

Eduardo Paes (DEM) e Marcelo Crivella (Republicanos), candidatos à prefeitura do Rio de Janeiro - André Melo Andrade/Immagini/Estadão Conteúdo e Reginaldo Pimenta/Agência O Dia/Estadão Conteúdo
Eduardo Paes (DEM) e Marcelo Crivella (Republicanos), candidatos à prefeitura do Rio de Janeiro Imagem: André Melo Andrade/Immagini/Estadão Conteúdo e Reginaldo Pimenta/Agência O Dia/Estadão Conteúdo

Igor Mello

Do UOL, no Rio

16/11/2020 02h31Atualizada em 16/11/2020 17h12

Na disputa pela Prefeitura do Rio, Eduardo Paes (DEM) entra no 2º turno com vantagem contra o prefeito Marcelo Crivella (Republicanos). Paes foi o vitorioso em 44 das 49 zonas eleitorais da capital e teve seu melhor desempenho na zona sul, enquanto Crivella conseguiu melhor performance na periferia da cidade.

Paes terminou o primeiro turno com 37,01% dos votos e abriu uma vantagem de aproximadamente 400 mil votos sobre Crivella —que teve 21,9% do eleitorado. O ex-prefeito venceu a disputa em todas as zonas eleitorais da zona sul da cidade, na região da Barra da Tijuca —seu principal reduto político— e em praticamente toda a zona norte.

Veja a votação por zonas eleitorais

Confirmando a tendência mostrada nas pesquisas de que Paes era hegemônico no eleitorado mais rico, o ex-prefeito teve seu melhor desempenho em toda a cidade na 17ª Zona Eleitoral (Copacabana, Gávea, Ipanema e Leblon), a área mais valorizada da cidade.

Paes também conseguiu vitórias expressivas em Laranjeiras e no Jardim Botânico, bairros da zona sul que votaram em candidatos de esquerda nas últimas eleições.

Crivella, por sua vez, teve seu melhor desempenho na zona oeste, região mais periférica do Rio. Foi lá que colheu quatro das cinco vitórias em zonas eleitorais na cidade.

O prefeito ficou na frente na 120ª ZE (Campo Grande e Senador Vasconcelos), na 122ª ZE (Campo Grande, Santíssimo e Senador Augosto Vasconcelos), na 238ª ZE (Bangu, Santíssimo, Senador Camará, Senador Augusto Vasconcelos) e na 245ª ZE (Campo Grande e Inhoaíba).

Foi nessa mesma região —com grande presença de militares e policiais— que o presidente Jair Bolsonaro (sem partido) obteve suas melhores votações na cidade do Rio em 2018.

Na zona norte, Crivella venceu apenas na 161ª ZE (Bonsucesso e Ramos).