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

Parte principal da fuselagem do avião da AirAsia é localizada

Do UOL, em São Paulo

14/01/2015 08h39

Equipes de resgate localizaram nesta quarta-feira (14) a parte principal da fuselagem do avião da AirAsia, que caiu em 28 de dezembro com 162 pessoas a bordo, no mar de Java, informaram autoridades locais.

Os especialistas acreditam que os corpos da maioria dos ageiros estão nesta parte do avião.

Um veículo submarino não tripulado, guiado da fragata cingapuresa "MV Swift", conseguiu registrar imagens da parte principal da aeronave e de uma das asas, afirmou o Ministério de Defesa, que acredita que a recuperação da fuselagem e dos ageiros que possam estar presos entre os destroços vai ajudar a acalmar os familiares das vítimas.

Por enquanto, só foram recuperados os corpos de 48 das 162 pessoas que viajavam no aparelho.  

Ontem, as equipes de resgate conseguiram recuperar a segunda caixa-preta do avião. O dispositivo, que contém a gravação das conversas entre os pilotos e a torre de comando, foi encontrado a poucos metros do local onde foi localizada no dia anterior a primeira caixa-preta, que contém o registro dos dados de voo.

O registro de voo, que oferecerá dados como altitude, velocidade e peso, e as conversas dos pilotos estão sendo analisados por especialistas e permitirão esclarecer que o que aconteceu com o avião da AirAsia.

Segundo a Comissão Nacional de Segurança no Transporte, o dos dados demora algumas horas ou um dia. A análise da informação, que está no sistema binário, pode se prolongar por duas semanas ou um mês e requer a ajuda de um programa especial e de especialistas da França, Coreia do Sul e Cingapura.

O acidente

O voo QZ8501 decolou da cidade de Surabaia, na ilha de Java, no dia 28 de dezembro e deveria ter aterrissado em Cingapura cerca de duas horas depois, mas caiu no mar de Java 40 minutos após partir. A aeronave transportava 155 indonésios, três sul-coreanos, um britânico, um francês, um malaio e um cidadão de Cingapura, entre ageiros e tripulação.

O piloto solicitou à torre de controle para fazer um desvio à esquerda na rota e subir de 32 mil para 38 mil pés com o objetivo de contornar uma tempestade. A alteração de curso foi aprovada, mas a elevação negada porque outra aeronave já trafegava na mesma altitude.

Minutos depois, quando os controladores de voo tentaram entrar em contato para informar que o avião da AirAsia estava autorizado a subir até 34 mil pés, não houve resposta. A aeronave já havia sumido dos radares. (Com agências internacionais)