;(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; // 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(); })();
PUBLICIDADE
  • Assine
Topo

Fórmula 1

Surpresa da Red Bull e Hamilton espião: como foi o 1º treino da F1

Detalhe da lateral rasgada no novo carro da Red Bull para a temporada de 2022 da Fórmula 1 - Divulgação/Red Bull
Detalhe da lateral rasgada no novo carro da Red Bull para a temporada de 2022 da Fórmula 1 Imagem: Divulgação/Red Bull

23/02/2022 10h26

Os motores da Fórmula 1 voltaram a roncar na manhã de hoje. A primeira atividade da categoria em 2022 aconteceu em Barcelona, com os testes coletivos que trouxeram surpresas e curiosidades.

Esta foi a primeira oportunidade de vermos os carros na pista, e a primeira chance das equipes olharem de perto o que as rivais estão preparando para a temporada que vai começar no dia 18 de março.

Atual vice-campeão, o inglês Lewis Hamilton não perdeu tempo e, vestido um sobretudo, gorro, máscara e óculos escuros, saiu eando pelo pit-lane para dar uma observada no que era feito na garagem das outras equipes.

Um dos focos de Hamilton pode ter sido o RB18, do atual campeão Max Verstappen. Depois de todo o mistério feito pela Red Bull, o carro foi finalmente apresentado.

A grande novidade apresentada foi uma agressiva lateral do carro, que apresenta uma divisão do fluxo de ar que é levado para a traseira.

Da Alfa Romeo, porém, o heptacampeão não deve ter tirado muita informação. O carro, que foi lançado na semana ada, apareceu na pista com uma pintura especial, toda camuflada. A equipe, que terá a dupla Valtteri Bottas e Zhou Guanyu no cockpit, teve Robert Kubica dando as primeiras voltas da temporada.

Quem optou por mostrar o carro sem os segredos da Alfa Romeo ou a badalação da Red Bull foi a Haas, que mostrou seu VF22 de forma oficial.

Os testes seguirão até a sexta-feira sendo que o mais rápido pela manhã foi Charles Leclerc, da Ferrari, que fechou em 1min20s165 em uma das quase 80 voltas que deu no circuito. A McLaren de Lando Norris foi a segunda mais rápida da sessão, com 1min20s474 como melhor das 50 voltas, enquanto George Russell, que fez 77 voltas com sua Mercedes, fez o terceiro tempo (1min20s784).

Sebastian Vettel, da Aston Martin, fez a quarta melhor parcial (1min21s276, em 52 voltas), seguido por Yuki Tsunoda (1min21s638, em 44 voltas). Verstappen foi quem mais deu voltas (80) e terminou com o sexto tempo da primeira sessão (1min22s246).

Na sequência vieram Fernando Alonso, da Alpine (1min23s317, em 54 voltas), Nicholas Latifi, da Williams (1min23s379, em 66 voltas), Nikita Mazepin, da Haas (1min24s505, em 20 voltas), e Robert Kubica, com apenas nove voltas, foi o mais lento da manhã (1min25s909).

Fórmula 1