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

Recomenda

Dicas de filmes, séries, leituras, sons, espetáculos


Recomenda

Livro fala da "masculinização obrigatória" às mulheres que chegam ao poder

A presidente Dilma, vendo a obra "Medusa Murtola" na abertura da mostra "Caravaggio" no Palácio do Planalto - Sergio Lima/Folhapress
A presidente Dilma, vendo a obra "Medusa Murtola" na abertura da mostra "Caravaggio" no Palácio do Planalto Imagem: Sergio Lima/Folhapress

Natacha Cortêz

Da Universa

11/04/2018 04h00

“No que diz respeito a silenciar as mulheres, a cultura ocidental tem milhares de anos de prática.” A frase é da historiadora britânica Mary Beard e está no livro “Mulheres e Poder: um manifesto”, do selo Crítica da Editora Planeta.

A professora da Universidade de Cambridge traça as origens da misoginia --começando pelo primeiro exemplo registrado de um homem mandando uma mulher calar a boca, em “Odisseia”, de Homero (século VIII a.C.)-- e mostra que o ódio contra as mulheres ganha força quando elas chegam às instâncias de poder, “dos comitês empresariais às sessões nos Parlamentos”, diz Mary, no livro.

Veja também

“Masculinização obrigatória"

A historiadora cita os obstáculos enfrentados por Margaret  Thatcher, Hillary Clinton, Dilma Rousseff e Angela Merkel na vida política. A primeira-ministra britânica, por exemplo, ou por aulas para falar com um tom mais grave e sisudo, características associadas à voz masculina.

As roupas usadas pelas mulheres que chegam ao poder no Ocidente também são apontadas por Mary como sintomas de uma “masculinização obrigatória". “Os terninhos regulamentares, ou pelo menos as calças compridas, usados por tantas líderes políticas (...), de Angela Merkel a Hillary Clinton, podem ser práticos (ou) um sinal da recusa em se tornar uma escrava da moda (...), que é o destino de tantas esposas de políticos; mas são também uma simples tática para fazer com que a mulher pareça mais masculina e adequada ao papel do poder.”

"Mulheres e Poder" - Divulgação - Divulgação
Imagem: Divulgação

A "Medusa", Angela, Hillary e Dilma

Em tempos de linchamento virtual, Mary recorre a exemplos contemporâneos de quando fotos das três líderes foram associadas à “Medusa” de Caravaggio. A montagem das imagens sugeria a decapitação simbólica das políticas. Uma busca simples na internet traz essas fotos.

“O rosto de Angela Merkel foi superposto à imagem de Caravaggio. Dilma Rousseff teve sorte pior. Precisou inaugurar uma grande exposição de Caravaggio em São Paulo e a 'Medusa' estava lá, em frente à ex-presidenta. Revelou-se uma irresistível oportunidade de foto [que abre este texto].” Nos Estados Unidos, Donald Trump surgiu como Perseu decapitando Hillary Clinton.

"Mulheres e Poder" - Divulgação - Divulgação
Imagem: Divulgação

A cena de Perseu-Trump brandindo a cabeça ensanguentada de Medusa-Clinton tornou-se parte do universo doméstico decorativo americano. Era possível comprá-la em sacolas, canecas e camisetas.

Recomenda