Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda