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

Raia 'sorrindo' faz sucesso na web, mas vídeo esconde sofrimento; entenda

Maurício Businari

Colaboração para o UOL

26/02/2023 04h00

Um vídeo publicado no Twitter com mais de um milhão de visualizações exibe uma raia de pequeno porte sendo "cutucada" por um homem. Com uma luva, ele toca no animal, que contorce seu corpo e a boca. A cena parece mostrar o peixe rindo, com cócegas. Mas a impressão esconde que ele está sofrendo.

A reação da raia é de susto e sua contorção demonstra um comportamento de defesa, segundo o biólogo Roberto Vieira dos Santos Júnior, 40, que comanda uma loja especializada em aquários e animais aquáticos na cidade de Santos, no litoral de São Paulo.

O "sorriso" identificado no vídeo, segundo ele, é sugerido por um processo chamado de pareidolia, um fenômeno psicológico que faz com que as pessoas reconheçam imagens de rostos humanos ou animais em nuvens, sombras, objetos ou qualquer outro estímulo visual aleatório.

No livro "O mundo Assombrado pelos Demônios", Carl Sagan afirma que a tendência de encontrar rostos em tudo está provavelmente associada à necessidade evolutiva de reconhecê-los rapidamente. Segundo o cientista, a seleção natural atua preservando os indivíduos que possuem facilidade em ver rostos em vários lugares, já que, na pré-história, o indivíduo que conseguisse identificar na mata densa ou na escuridão os olhos e a boca de um predador tinha chances maiores de sobreviver.

Perigo para humanos e para as próprias raias

Sobre a raia, Santos Júnior afirma que, apesar da intenção de fazer graça, a ação pode ser perigosa tanto para o animal quanto para a pessoa que o manipula.

raia - Reprodução de vídeo - Reprodução de vídeo
Biólogo avisa que retirar uma raia da água e manipulá-la pode ser perigoso para o animal e para o humano
Imagem: Reprodução de vídeo

As raias têm caudas longas e finas que apresentam de uma a três farpas venenosas. A picada causa imensa dor e pode ocorrer infecção no local da ferida, com perigo de morte para casos muito graves.

"Além disso, é possível ver que a arraia se contorce e abre bem a boca quando tocada na região ventral. Ela não está sentindo cócegas, ela abriu a boca porque se assustou. E é interessante registrar que aqueles pontinhos pretos não são olhos", destaca o biólogo, referindo-se a um par de órgãos sensoriais que o animal apresenta acima da boca.

"Os olhos ficam localizados na parte dorsal", explica ele.

Segundo o biólogo, houve risco de o animal morrer por não conseguir respirar, já que foi mantido fora d'água.

As raias respiram debaixo d'água, com a diferença que elas têm espiráculos, que são aberturas que usam para as trocas gasosas. Assim, a boca do animal fica livre para comer, pois não precisa ingerir água para bombeá-las pelas brânquias, como fazem os peixes.