¿Detección de evento de cambio de iFrame src?

Resuelto Matrym asked hace 14 años • 7 respuestas

Suponiendo que no tengo control sobre el contenido del iframe, ¿hay alguna manera de que pueda detectar un cambio de src a través de la página principal? ¿Quizás algún tipo de carga?

Mi último recurso es hacer una prueba de intervalo de 1 segundo si el iframe src es el mismo que antes, pero hacer esta solución hacky sería una mierda.

Estoy usando la biblioteca jQuery si me ayuda.

Matrym avatar Mar 12 '10 05:03 Matrym
Aceptado

Es posible que desee utilizar el onLoadevento, como en el siguiente ejemplo:

<iframe src="http://www.google.com/" onLoad="alert('Test');"></iframe>

La alerta aparecerá cada vez que cambie la ubicación dentro del iframe. Funciona en todos los navegadores modernos, pero es posible que no funcione en algunos navegadores muy antiguos como IE5 y los primeros Opera. ( Fuente )

Si el iframe muestra una página dentro del mismo dominio del principal , podrá acceder a la ubicación con contentWindow.location, como en el siguiente ejemplo:

<iframe src="/test.html" onLoad="alert(this.contentWindow.location);"></iframe>
Daniel Vassallo avatar Mar 11 '2010 22:03 Daniel Vassallo

Respuesta basada en JQuery <3

$('#iframeid').load(function(){
    alert('frame has (re)loaded');
});

Como lo menciona subharb, a partir de JQuery 3.0 esto debe cambiarse a:

$('#iframe').on('load', function() {
    alert('frame has (re)loaded ');
});

https://jquery.com/upgrade-guide/3.0/#breaking-change-load-unload-and-error-removed

Michiel avatar Oct 22 '2012 14:10 Michiel