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

Talisca brilha e dá vitória para o Al-Nassr em estreia de Cristiano Ronaldo

Anderson Talisca comemora seu gol na partida entre Al Nassr e Al Ettifaq, pelo Campeonato Saudita - Fayez Nureldine/AFP
Anderson Talisca comemora seu gol na partida entre Al Nassr e Al Ettifaq, pelo Campeonato Saudita Imagem: Fayez Nureldine/AFP

Colaboração para o UOL, em São Paulo

22/01/2023 16h25

Cristiano Ronaldo estreou pelo Al-Nassr e teve sua primeira vitória jogando o Campeonato Saudita. Por 1 a 0, com gol do brasileiro Anderson Talisca, o time bateu o Al-Etiffaq em casa e recuperou a liderança, ao fim da 14ª rodada da competição.

O Jogo:

Al-Nassr começou mais ligado. Com CR7 em campo, o time dominou as ações ofensivas desde o início, mas sem levar muito perigo à meta adversária. Aos sete minutos, Cristiano tentou seu primeiro chute ao gol, mas foi travado e viu a bola sair pela linha de fundo.

Posse de bola sem eficiência. Apesar da equipe da casa ter mais ações e conseguir chegar à área do Al-Etiffaq, nenhuma chance clara de gol aconteceu até quase 30 minutos. Lançamentos e es errados matavam as tentativas e Cristiano pouco conseguia fazer.

Primeira assistência do camisa 7? Em cruzamento procurando Ronaldo na área, o português parece conseguir dar um leve tapinha de cabeça antes de Talisca completar para o gol.

Al-Etiffaq ameaça pela primeira vez. Já nos minutos finais do primeiro tempo, o time visitante conseguiu uma boa chance para buscar o empate. Em bola aberta pela esquerda, Vitinho chegou chutando de primeira, mas mandou pela lateral da trave.

Volta dos vestiários esfria o jogo. O começo da segunda etapa foi de pouca inspiração dos dois times. Aos dez minutos, mais uma vez, Ronaldo tentou um arremate para o gol, mas viu seu chute travado pela defesa.

Quase um golaço para animar a partida. Foi por pouco que Cristiano não garantiu uma senhora assistência. Quase na linha de fundo pela esquerda, o português fez um cruzamento milimétrico para Martinez, que pegou de chapa e de primeira e viu o goleiro tirar com a ponta dos dedos.

Até bicicleta ele tentou. Buscando o primeiro gol oficial pelo Al-Nassr, Cristiano chegou a tentar uma bicicleta após longo cruzamento, mas furou. O jogo seguiu morno, com trocas dos dois lados, mas sem muita mudança de ritmo.

Final teve mais chances. Com algumas chances para ambos os lados, os últimos minutos reservaram mais movimentações para o segundo tempo. Boas triangulações do Al Nassr quase renderam um gol, mas as finalizações não foram eficientes o bastante.

Gol

1x0. Aos 30 minutos, em cruzamento de Alsulaihem pela esquerda, a bola viajou para a área, onde Cristiano tenta tirar uma casquinha, antes de Talisca mandar de cabeça para o fundo da rede, abrindo o placar.

FICHA TÉCNICA

Al-Nassr x Al-Etiffaq

Competição: 14ª rodada do Campeonato Saudita

Local: Mrsool Park Stadium

Data e horário: 22 de janeiro de 2023, às 14h30 (de Brasília)

Gols: Anderson Talisca (Al Nassr), aos 30 minutos do primeiro tempo.

Al-Nassr: Nawaf; Sultan, Mado, Alamri, Lajami; Al Etiffaq, Ghareeb, Talisca, Pitty Martinez; Ronaldo. Técnico: Rudi Garcia

Al-Etiffaq: Paulo Vitor; Mowalad, Mosa, Tisserand, Khateeb; Al-Kuwaykib, Hazazi, Al-Ghamdi, Vitinho; Quaison. Técnico: Patrice Carteron