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

MMA


Johnny Walker resiste à pressão e nocauteia rival, que reclama de golpes

O lutador Johnny Walker enfrentou Ryan Spann pelo UFC em Las Vegas - Chris Unger/Zuffa LLC via Getty Images
O lutador Johnny Walker enfrentou Ryan Spann pelo UFC em Las Vegas Imagem: Chris Unger/Zuffa LLC via Getty Images

Diego Ribas, em Las Vegas (EUA)

Ag. Fight

19/09/2020 22h28

Pressionado por duas derrotas seguidas no UFC, Johnny Walker entrou no octógono neste sábado (19) para encarar Ryan Spann em duelo que se tornou sua redenção no evento. Agressivo, o atleta precisou ar a pressão inicial, quando sofreu um knockdown, até conquistar o suado triunfo -- que contou com a reclamação do adversário.

Ao tentar um chute, o brasileiro recebeu um forte cruzado que o levou o chão. Na sequência, o americano chegou a montar e seguiu golpeando, dando a entender que poderia acabar com o combate a qualquer momento.

No entanto, Johnny resistiu aos ataques, escapou e voltou com a disputa em pé. Ali, ao defender uma tentativa de queda junto à grade, o meio-pesado ou a desferir socos e cotoveladas que nocautearam Spann.

Por sua vez, o americano questionou se os ataques de Johnny teriam sido legais. De acordo com sua equipe, o rival teria atacado a parte de trás de sua cabeça, o que é proibido pelas regras. O árbitro Dan Miragliotta não apontou nenhuma ilegalidade no confronto.

Confira os resultado do UFC Las Vegas 11:

  • Johnny Walker nocauteou Ryan Spann no 1º round;
  • Mackenzie Dern finalizou Randa Markos no 1º round;
  • Kevin Holland venceu Darren Stewart por decisão dividida;
  • David Dvo?ák venceu Jordan Espinosa por decisão unânime;
  • Damon Jackson finalizou Mirsad Bekti? no 3º round;
  • Mayra 'Sheetara' finalizou Mara Romero Borella no 1º round;
  • Jessica-Rose Clark nocauteou Sarah Alpar no 3º round;
  • Darrick Minner finalizou T.J. Laramie no 1º round;
  • Randy Costa nocauteou Journey Newson no 1º round;
  • Andre Ewell venceu Irwin Rivera por decisão unânime;
  • Tyson Nam nocauteou Jerome Rivera no 2º round;