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

Liga Europa - 2021/2022

Trapp fala em português sobre conexão com Brasil e carinho por funk; veja

Kevin Trapp beija a modelo brasileira Izabel Goulart após classificação contra o Barcelona na Liga Europa - David Ramos/Getty Images
Kevin Trapp beija a modelo brasileira Izabel Goulart após classificação contra o Barcelona na Liga Europa Imagem: David Ramos/Getty Images

Colaboração para o UOL, em Santos (SP)

28/04/2022 12h08

Semifinalista da Liga Europa, o goleiro Kevin Trapp é mais brasileiro do que muita gente pensa. Em entrevista para o canal do Eintracht Frankfurt, que hoje (28) enfrenta o West Ham no primeiro jogo da semi do torneio continental, o ex-jogador do PSG 'gastou' o seu português e falou sobre a forte conexão que tem com o país verde e amarelo.

Além de ser noivo da modelo Izabel Goulart, o arqueiro alemão conviveu com brasileiros especialmente no Paris Saint-Germain, clube que defendeu entre 2015 e 2019.

"Gosto muito da cultura do Brasil, todo mundo parece sempre feliz, sempre com um sorriso no rosto. Parece que sempre está tudo bem", iniciou, em português.

"A comida eu conheci com minha mulher e com os jogadores quando eu jogava no PSG. É um país que gosto muito, as pessoas que eu amo também. Não sei porque estou tão conectado, talvez por minha mulher ser brasileira, acho que isso tem grande parte na conexão, e por ter muitos amigos brasileiros também", acrescentou.

Izabel Goulart e Kevin Trapp curtem Natal na praia - Reprodução/Instagram - Reprodução/Instagram
Izabel Goulart e Kevin Trapp curtem Natal na praia
Imagem: Reprodução/Instagram

Em seguida, Kevin Trapp se divertiu ao falar sobre o funk, seu gênero musical brasileiro preferido e que, segundo ele, ajudou muito no aprendizado da língua.

"Eu comecei aprender a língua com a música do funk. Acho que a primeira música que eu escutei era do Kevinho, porque era fácil de aprender. Aí comecei também a perguntar o que significava e tal, e era assim que aprendi também as coisas boas [risos]. O funk tem coisas que você não pode usar no dia a dia, mas gosto muito do funk também", brincou.

Kevin Trapp é um dos destaques do Eintracht Frankfurt, que a partir das 16h (de Brasília) de hoje (28) encara o West Ham no primeiro jogo de uma das semifinais da Liga Europa, no estádio Olímpico de Londres. O duelo de volta está marcado para a próxima quinta, dia 5, na Alemanha.