iframe justo antes del evento de descarga

1 minuto de lectura

Necesito capturar un evento que debería activarse justo antes de que desaparezca el contenido del iframe.

He estado tratando de lograr algo como esto

$iframe = $('iframe');
$iframe.beforeunload(function () {
  debugger;
});

O

$iframe = $('iframe');
$iframe.unload(function () {
  debugger;
});

Incluso he intentado vincularlo a la ventana del iframe sin suerte.

$iframe = $('iframe');
$iframe[0].contentWindow.onunload = function () {
  debugger;
};

Ninguno de estos controladores de eventos realmente se activa para mí

y estoy bastante confundido por qué. Para recargar el iframe que uso .reload() desde fuera del iframe y desde dentro, ¿tal vez necesito usar un método diferente?

  • ¿Qué tal: $iframe = $(‘iframe’)[0];

    – Lanza

    08/06/2015 a las 20:58

  • Entonces: $iframe.contentWindow.onunload = función…

    – Lanza

    08/06/2015 a las 20:58

  • Hmm, esta debería ser la equivalencia: $iframe[0].contentWindow.onunload

    – Máx.

    08/06/2015 a las 21:00

  • Sí, pensarías, pero he visto cosas más estúpidas…

    – Lanza

    08/06/2015 a las 21:06

¡Lo averigué! yo no sabia el contentWindow pierde su referencia después de una recarga.

$iframe.load(function () {
  $iframe[0].contentWindow.onbeforeunload = function () {
    debugger;
  };
});

  • En las versiones modernas de jQuery (3.x), debe cambiar esto a $iframe.on( 'load', function(){ ... } );

    – Miguel Sánchez Villafán

    11 de noviembre de 2020 a las 1:50

¿Ha sido útil esta solución?