;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Briga entre Magalu e Via na internet escancara prática que tem crescido

Magazine Luiza e a Via, dona das Casas Bahia, entram em briga judicial por espaço publicitário em ferramentas de busca - Reprodução/Instagram
Magazine Luiza e a Via, dona das Casas Bahia, entram em briga judicial por espaço publicitário em ferramentas de busca Imagem: Reprodução/Instagram

Célia Froufe

Brasília

05/02/2022 12h00Atualizada em 05/02/2022 14h46

Quem nunca fez uma busca na internet por um produto ou empresa e viu como primeiro resultado da pesquisa uma companhia concorrente ou um item similar? É isso o que está por trás da guerra judicial entre o Magazine Luiza e a Via, dona de marcas como Casas Bahia. Disputas como esta existem desde que a rede ou a ser também um espaço publicitário, segundo o diretor-geral no Brasil da AdPolice, Daniel Filla, mas tendem a "explodir" nos próximos anos.

Há algumas formas de se "parasitar" uma marca nas redes. O infrator pode cometer uma fraude visível, só de palavra-chave, ou uma mescla desses dois atos. O chamado branding bidding já foi aportuguesado pelo vocabulário do mercado de publicidade.

"Alguém bidou minha marca", é a expressão usada. O termo é geralmente utilizado quando se faz uma busca por determinada empresa na internet e o primeiro resultado que emerge é o de uma competidora. É considerado menos grave, mas com a maior ocorrência de ilícitos. Outro, considerado mais grave, é quando há uma clara fraude por meio de texto e imagem. É o "sequestro de anúncio", mais conhecido pelo termo em inglês Ad Hijacking.

Quando uma má conduta da concorrência é descoberta, a primeira ação é evitar o enfrentamento, alerta Filla. Ele recomenda comunicar o buscador - empresas como Google, Bing e Yahoo.

Risco financeiro

O diretor da AdPolice diz que essa prática pode ser um problema sério para o caixa de companhias que atuarem fora dos trilhos no futuro, pois se for comprovado desvio de navegação do usuário durante longos períodos por empresas que têm receitas substanciais pela internet, os montantes de penalidade podem chegar à casa de milhares ou milhões de reais.

"São condenações perigosas, e podem se tornar uma fábula", alertou. No Brasil, o brand bidding pode ser penalizado com base na Lei de Propriedade Industrial, que assegura a retirada imediata dos materiais.