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

Brasil perde disputa, e Amazon ganha o direito de usar seu nome na internet

Amazon poderá usar o nome da empresa exclusivamente em domínios na internet - Getty Images
Amazon poderá usar o nome da empresa exclusivamente em domínios na internet Imagem: Getty Images

Bruna Souza Cruz

Do UOL*, em São Paulo

21/05/2019 10h59

A Amazon, a maior rede varejista do mundo, venceu uma batalha que se estendia por sete anos contra oito países da América Latina, incluindo o Brasil. A partir de agora ela terá todo o direito de usar exclusivamente o nome da empresa como domínio da internet. Ou seja, poderá criar sites com o endereço ".amazon" e suas variações.

A decisão foi tomada pela Icann (Corporação para Atribuição de Nomes e Números na Internet), agência norte-americana responsável por istrar e liberar os endereços de internet -- como ".com", ".net" e ".org".

A medida a a valer dentro de 90 dias e a Icann receberá contribuições ao longo desse período.

Por que o Brasil queria impedir isso?

Assim como o Brasil, os países latino-americanos que compartilham a floresta amazônica não devem ter ficado satisfeitos com a decisão.

Durante sete anos, eles defenderam nos tribunais que a empresa de Jeff Bezos não deveria ter o direito exclusivo de usar a palavra Amazon em seus sites. Afinal, existe uma clara relação semântica do nome da empresa com uma região geográfica de importância mundial que se estende por várias nações.

Em português, por exemplo, Amazon significa Amazônia. O Peru, um dos países envolvidos na disputa, argumenta que a palavra traduzida é o nome de um rio que corta a região.

Em 2014, a Icann recusou o pedido da Amazon e se mostrou favorável aos argumentos dos países sul-americanos. No entanto, a varejista apelou. Após uma reavaliação, o órgão voltou atrás, em 2017.

Antes de tomar a decisão final, a Icann até havia considerado que a empresa e os países poderiam entrar em um acordo. Como isso não aconteceu, o órgão tomou uma resolução própria.

O argumento levado em consideração na decisão final foi o fato de que a Amazon se comprometeria a não usar endereços na internet que tivessem algum contexto relacionado a Amazônia. Além disso, a varejista autorizaria os países latino-americanos a utilizar domínios relacionados à floresta (e ao nome) com a condição de não ter fins comerciais e para melhorar a visibilidade da região.

O governo brasileiro lamentou a decisão nesta segunda-feira (20) e se mostrou preocupado com o fato de que o interesse público definido por outros países não foi suficiente para convencer sobre a importância de defender o patrimônio natural e os povos da região amazônica.

*Com informações da AFP