;(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();
})();
Saiba quais cuidados você deve ter ao usar lentes de contato no verão
Imagem: iStock
Daniel Navas
Colaboração para o VivaBem
16/01/2018 04h02
Sol, areia, mar, piscina, esportes ao ar livre. O verão é uma época cheia de diversões que ninguém quer perder de vista. No entanto, quem usa lentes de contato precisa tomar alguns cuidados para não sofrer com problemas que podem prejudicar a saúde dos olhos. Veja quando você deve redobrar a atenção ou até mesmo optar pelos óculos.
Em viagens de avião
Não é errado usar lentes de contato quando você vai viajar de avião. Porém, é melhor retirá-las, principalmente em voos noturnos ou com mais de quatro horas de duração. Por causa do ar-condicionado da cabine, os olhos tendem a ficar ressacados e as lentes podem provocar desconforto, irritação, coceira e até dor. Antes de viajar, procure o seu oftalmologista para que ele indique um colírio lubrificante.
Se não quiser tirar a lente para entrar na piscina ou no mar, use óculos de natação. Na água existem muitas bactérias que podem ficar na lente, aumentando o risco de uma infecção bacteriana, que pode causar úlceras de córnea, por exemplo. Além disso, o cloro utilizado nas piscinas também pode entrar em contato com as lentes e gerar algum tipo de irritação.
Ao praticar esportes
Imagem: iStock
Não há problema algum em usar lentes para correr, pedalar, jogar frescobol etc. Na verdade, é até melhor pois as lentes não embaçam ou se deslocam e ainda permitem melhor visão periférica do que os óculos de grau. Se possível, use óculos escuros quando for praticar esportes. Assim, você evita que ciscos, insetos ou grãos de areia entrem no seu olho --o que pode fazer você coçá-lo e perder a lente.
Quando for se maquiar para curtir as festas de verão
A dica aqui é utilizar produtos de beleza que não são à prova d´água. Isso por conta da resistência dessas maquiagens, que podem aderir às lentes de contato e danificá-las. Coloque as lentes antes de começar a se maquiar. Assim, você garante que não há nenhum pó em suas mãos. Quando for remover o make, você deve remover primeiro as lentes.
As lentes protegem seus olhos dos raios solares
Sabia que as lentes de contato filtram raios UVA e UVB e protegem a córnea e o limpo (região periférica da córnea)? Essa é uma das grandes vantagens do produto em relação a maioria dos óculos de grau.
Há dois tipos de proteção: UV classe I e UV classe II. A primeira bloqueia pelo menos 90% dos raios UVA e 99% dos raios UVB. Já a proteção UV classe II bloqueia pelo menos 50% dos raios UVA e 95% dos raios UVB. Mesmo assim, ainda é recomendado usar óculos escuros, principalmente para proteger do sol a área em torno dos olhos.
Fontes: Adriano Biondi, oftalmologista do Hospital Israelita Albert Einstein; e Milton Ruiz Alves, oftalmologista e membro do Conselho Brasileiro de Oftalmologia (CBO).
ID: {{comments.info.id}}
URL: {{comments.info.url}}
Ocorreu um erro ao carregar os comentários.
Por favor, tente novamente mais tarde.
{{comments.total}} Comentário
{{comments.total}} Comentários
Seja o primeiro a comentar
Essa discussão está encerrada
Não é possivel enviar novos comentários.
Essa área é exclusiva para você, , ler e comentar.
Só s do UOL podem comentar
Ainda não é ? Assine já.
Se você já é do UOL, faça seu .
O autor da mensagem, e não o UOL, é o responsável pelo comentário. Reserve um tempo para ler as Regras de Uso para comentários.