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

Meghan Markle e Kate Middleton brigaram por vestido de Charlotte, diz Harry

William, Kate, Harry e Meghan  - Getty Images
William, Kate, Harry e Meghan Imagem: Getty Images

Colaboração para Splash, em São Paulo

09/01/2023 18h33Atualizada em 09/01/2023 18h33

Príncipe Harry revelou o motivo para uma das brigas entre sua esposa, Meghan Markle e Kate Middleton: o vestido da sobrinha de Harry, Charlotte, para seu casamento.

Na autobiografia do príncipe, 'O que sobra', ele relatou as mensagens de texto trocadas entre as duas. "O vestido de Charlotte está grande demais, longo demais, muito folgado. Ela chorou quando o experimentou em casa", dizia a mensagem inicial de Kate, de acordo com Harry. Meghan teria respondido: "Sim, e eu te falei que o costureiro está à disposição desde as 8 da manhã. Aqui. Você pode levar a Charlotte para fazer as alterações, como as outras mães estão fazendo?", ao que Kate respondeu com a exigência de que "todos os vestidos fossem alterados", dizendo também que havia falado sobre o assunto com o profissional que cuidou das roupas de seu casamento com o príncipe William, e que ele havia concordado.

Meghan, então, teria tentado conversar com Kate sobre estar sob muito estresse com as coisas do casamento e todo o resto, citando como exemplo a polemica envolvendo seu pai vendendo fotos a tabloides. "Kate disse que sabia, mas os vestidos! E faltavam quatro dias para o casamento", disse Harry no livro, de acordo com o jornal 'Page Six'.

O príncipe também disse que Kate estava tendo problemas "com o jeito com o qual Meg estava cuidando das coisas do casamento", disse Harry. Deois de algumas tentativas de resolver o problema, Meghan apenas respondeu: "Não sei mais o que te dizer. Se o vestido não serve, leve Charlotte para ver Ajay (o ccostureiro). Ele está esperando o dia todo", diz Harry, lembrando que encontrou sua esposa "chorando muito no chão" após a discussão.

O livro de Harry, 'O que sobra', será lançado amanhã, dia 10. O príncipe fez diversas revelações tanto na biografia quanto nas entrevistas para promovê-la. Veja as maiores bombas que Harry revelou até agora.