Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
Cómo detecta el navegador cuándo el sistema operativo va a hibernar/suspender

Tengo que ejecutar una función antes de que el sistema operativo hiberne/suspenda para cerrar correctamente la conexión webrtc. ¿Hay un detector de eventos o una cierta forma de detectar eso en el navegador?

He intentado con "beforeunload" pero no lo detecta.

almost 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Hay un evento de congelación de borrador

https://wicg.github.io/page-lifecycle/spec.html

pero no está respaldado de manera amplia o confiable al momento de responder

https://caniuse.com/mdn-api_document_freeze_event

Si desea una implementación del evento de congelación, puede encontrarla en https://whatwebcando.today/freeze-resume.html

vuezo a la API

 document.addEventListener('freeze') 

Un evento activado cuando la página ha sido congelada y descargada por el sistema operativo.

 document.addEventListener('resume') 

Un evento activado cuando la página se reanudó después de que el sistema operativo la congelara.

 document.wasDiscarded

Un indicador booleano que indica si la carga actual se ha producido después de que la aplicación web se haya descartado previamente.

Fragmento de código relevante de esa página.

 var target = document.getElementById('target');

if ('wasDiscarded' in document) {
 document.getElementById('wasDiscarded').innerText = document.wasDiscarded.toString();
}

function getState() {
 if (document.visibilityState === 'hidden') {
 return 'hidden';
 }
 if (document.hasFocus()) {
 return 'focused';
 }
 return 'not focused';
};

var state = getState();

function logStateChange(nextState) {
 var prevState = state;
 if (nextState !== prevState) {
 var timeBadge = new Date().toTimeString().split(' ')[0];
 var newLog = document.createElement('p');
 newLog.innerHTML = '' + timeBadge + ' State changed from ' + prevState + ' to ' + nextState + '.';
 target.appendChild(newLog);
 state = nextState;
 }
};

function onPageStateChange() {
 logStateChange(getState())
}

['pageshow', 'focus', 'blur', 'visibilitychange', 'resume'].forEach(function (type) {
 window.addEventListener(type, onPageStateChange, {capture: true});
});

function onFreeze() {
 logStateChange('frozen');
}

window.addEventListener('freeze', onFreeze, {capture: true});

function onPageHide(event) {
 if (event.persisted) {
 // If the event's persisted property is `true` the page is about
 // to enter the page navigation cache, which is also in the frozen state.
 logStateChange('frozen');
 } else {
 // If the event's persisted property is not `true` the page is about to be unloaded.
 logStateChange('terminated');
 }
}

window.addEventListener('pagehide', onPageHide, {capture: true});
 <p>Was current page load initiated from a discarded state? 
 <b id="wasDiscarded">unknown</b>.</p>
 <p>Change the browser tab state to observe the changes log.</p>
<div id="target"></div>
<p><small>Based on the demo from <a href="https://developers.google.com/web/updates/2018/07/page-lifecycle-api" target="_blank" rel="noopener">Google Developers</a>.</small></p>

almost 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda