;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Bolsas europeias encerram mês com maior perda mensal desde junho

Do Estadão Conteúdo

31/01/2014 17h28Atualizada em 19/03/2014 19h00

São Paulo - As Bolsas europeias fecharam em baixa nesta sexta-feira (31), e encerraram o mês de janeiro com a maior perda mensal desde junho do ano ado, após os dados de inflação e desemprego na zona do euro virem abaixo do que o projetado por analistas, o que reacendeu os temores de deflação na região.

O índice Stoxx 600 encerrou o pregão em queda de 0,30%, aos 322,52 pontos. Na semana, o índice perdeu 0,70% e no mês o recuo foi de 1,80%.

A agência oficial de estatísticas da União Europeia, a Eurostat, informou que o índice de preços ao consumidor (I, na sigla em inglês) caiu para 0,7% em janeiro na comparação anualizada, contra 0,8% registrados em dezembro. O resultado ficou abaixo da previsão de 0,9% e ainda mais longe da meta de inflação de 2,0% do BCE.

O resultado pode aumentar a pressão sobre o Banco Central Europeu (BCE) para agir mais decisivamente na tentativa de evitar a aceleração da queda nos preços. A queda na taxa de inflação em 2014 começou a alimentar temores de um cenário de deflação na zona do euro e vem prejudicando a recuperação das economias da região.

Por sua vez, a taxa de desemprego da zona do euro ficou em 12% em dezembro, igual à de novembro, que foi revisada para baixo de 12,1% originalmente, segundo dados divulgados nesta sexta pela Eurostat. O resultado ficou abaixo da taxa de 12,1% prevista por analistas consultados pela Dow Jones Newswires.

Apesar da estabilidade da taxa, o número de desempregados no bloco mostrou queda de 129 mil em dezembro, para 19,01 milhões de pessoas. O recuo é o maior registrado em um único mês desde abril de 2007, período anterior ao início da crise financeira do bloco.

Os resultados fracos se somaram ao mau humor com países emergentes e à retirada de estímulos à economia pelo Federal Reserve (Fed, o banco central dos Estados Unidos), que fizeram com que os mercados de ações da Europa operassem em queda nos últimos dias. "Na Europa, estamos caminhando progressivamente para longe dos altos níveis que vimos recentemente. Os mercados europeus iniciaram há uns dias uma jornada para baixo que ainda pode durar algumas semanas", afirmou um investidor.

O índice FTSE 100, da Bolsa de Londres, encerrou o pregão em baixa de 0,43%, a 6.510,44 pontos. A Bolsa inglesa foi a que teve o pior desempenho na semana (-2,30%) e no mês (-3,54%).

Na Bolsa de Paris, o índice CAC-40 teve baixa de 0,30%, fechando a 4.165,72 pontos. O ganho de 0,10% da bolsa sa na semana, porém, não foi suficiente para reverter as perdas do mês. Em janeiro, o índice fecha em baixa de 3,03%.

O índice DAX de Frankfurt caiu 0,70%, a 9.306.48. Na semana, as perdas foram de 0,90% e no mês de 2,60%. O índice IBEX 35 da Bolsa de Madri encerrou em baixa de 0,44%, a 9.920,20 pontos, apesar de acumular ganhos na semana (+0,52%) e no mês (+0,04%).

O índice FTSE-Mib, da Bolsa de Milão, foi o único que encerrou em alta o pregão de hoje, com ganho de 0,03%, a 19.418,34. A Bolsa avançou também na semana (+0,02%) e no mês (+2,31%).

Já o índice PSI-20, da Bolsa de Lisboa, recuou 1,01%, a 6.696,67 pontos. A Bolsa portuguesa acumulou perdas na semana (-1,13%), porém teve ganhos no acumulado do mês (+2,10%).