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

Reação a queimadas leva Itamaraty a defender gestão da Amazônia no Twitter

O chanceler Ernesto Araújo (esq) e o ministro do Meio Ambiente, Ricardo Salles (dir), com o presidente Jair Bolsonaro - Pedro Ladeira/Folhapress
O chanceler Ernesto Araújo (esq) e o ministro do Meio Ambiente, Ricardo Salles (dir), com o presidente Jair Bolsonaro Imagem: Pedro Ladeira/Folhapress

Talita Marchao

Do UOL, em São Paulo

21/08/2019 16h20Atualizada em 21/08/2019 16h22

Após a repercussão negativa da gestão ambiental do presidente Jair Bolsonaro (PSL) na comunidade internacional e nas redes sociais nos últimos dias, o Ministério de Relações Exteriores iniciou hoje uma campanha no Twitter, em inglês e português, veiculando mensagens em defesa da atuação brasileira na preservação da Amazônia. As postagens foram publicadas no mesmo dia em que a hashtag #prayforamazonas (reze pelo Amazonas) virou um dos assuntos mais comentados do dia mundialmente na rede social.

A primeira das postagens do Itamaraty faz referência indireta ao título dado a um texto de uma revista de relações internacionais, a Foreign Policy, há algumas semanas, que questionava "Quem vai invadir o Brasil para salvar a Amazônia?".

Em seguida, as postagens elencam argumentos em defesa da atuação brasileira na preservação da Amazônia, incluindo a legislação que requer que proprietários rurais na floresta preservem 80% da mata nativa e o estabelecimento de unidades de conservação e ambiental e reservas indígenas em 50% do território amazônico.

Um dos posts compara ainda o tamanho da Amazônia com o território francês --a França tem criticado duramente o governo Bolsonaro pela gestão ambiental da área de preservação e pelo apoio às comunidades indígenas, e condicionou a permanência do Brasil no Acordo de Paris ao fechamento do tratado de livre comércio com a União Europeia.

O Itamaraty foi procurado para comentar a campanha no Twitter, e esta reportagem será atualizada assim que um posicionamento for enviado pela chancelaria brasileira.

Amazônia tem maior índice de queimadas, diz Inpe

Dois em cada três focos de queimada registrados em agosto ocorreram na Amazônia. Segundo dados do Programa Queimadas do Inpe (Instituto Nacional de Pesquisas Espaciais), os incêndios no bioma responderam por 65,1% do total.

O percentual em relação a outros biomas é o maior entre os meses de agosto desde o início da medição, em 2003.

Sem prova, Bolsonaro acusa ONGs de estarem por trás de queimada na Amazônia

UOL Notícias