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

Charles impediu príncipe William de rebater livro de Harry, diz jornal

Harry e William no funeral da rainha Elizabeth 2ª; briga de irmãos foi um dos conflitos familiares expostos no livro "Spare" - Getty Images
Harry e William no funeral da rainha Elizabeth 2ª; briga de irmãos foi um dos conflitos familiares expostos no livro "Spare" Imagem: Getty Images

De Splash, em São Paulo

08/01/2023 11h46Atualizada em 08/01/2023 11h46

A Família Real Britânica criou uma "sala de guerra" para discutir as repercussões do livro de Harry, que revelou detalhes de sua vida íntima na obra biográfica, como uma briga com o irmão, William, e sua oposição ao casamento do pai, o rei Charles 3º, com Camilla Parker Bowles, a rainha consorte.

Segundo o site Page Six, William defendeu que a família emitisse uma nota de resposta às alegações feitas na história, mas foi voto vencido depois que o rei decidiu manter a mesma política de sua mãe, Elizabeth 2ª, que costumava seguir o lema "nunca reclame, nunca explique".

Apesar da decisão de permanecer em silêncio, os membros da Família Real continuam tensos com os próximos os de Harry. Além do livro, que será oficialmente lançado apenas no dia 10, ele também dará duas grandes entrevistas para a televisão americana. Uma delas vai ao ar hoje, no tradicional programa "60 minutes", com o jornalista Anderson Cooper.

"Havia um medo inquestionável sobre o que o Harry iria escrever, e particularmente uma preocupação sobre os momentos profundamente pessoais de suas vidas sendo recontados", afirmou uma fonte anônima ouvida pelo tabloide britânico.

Conselheiros também estariam presentes na discussão de gestão de crise, que aconteceu em Sandringham, uma casa de campo dos monarcas, usada para sua primeira festa de Natal após a morte da rainha Elizabeth 2ª.

Em um trecho vazado de seu livro, o duque de Sussex afirmou que William chegou a jogá-lo contra um pote de comida de um cachorro, que se quebrou com o impacto, provocando cortes em seu corpo.

"Ele não irá revidar, nunca iria, porque ele é honrado e incrivelmente fiel", afirmou um amigo próximo de William ao The Sunday Times of London, criticando a exposição feita por Harry. "É cruel, covarde e muito triste para William, que continua aguentando esses golpes. Mas ele está se mantendo quieto pelo bem da família e do país".