Dans la lignée de la réponse de Tim Down mais en utilisant jQuery
(mentionné par l'OP) et en couplant de manière lâche la page conteneur et l'iframe, vous pourriez faire ce qui suit :
Dans l'iframe :
$(function() {
var w = window;
if (w.frameElement != null
&& w.frameElement.nodeName === "IFRAME"
&& w.parent.jQuery) {
w.parent.jQuery(w.parent.document).trigger('iframeready');
}
});
Dans la page conteneur :
function myHandler() {
alert('iframe (presque) chargé');
}
$(document).on('iframeready', myHandler);
L'iframe déclenche un événement sur le document de la fenêtre parent (éventuellement existante) - veuillez noter que le document parent doit avoir une instance jQuery de lui-même pour que cela fonctionne. Ensuite, dans la fenêtre parent, vous attachez un gestionnaire pour réagir à cet événement.
Cette solution a l'avantage de ne pas se casser lorsque la page conteneur ne contient pas le gestionnaire de chargement attendu. Plus généralement, cela ne devrait pas être la préoccupation de l'iframe de connaître son environnement environnant.
Veuillez noter que nous exploitons l'événement DOM ready pour déclencher l'événement - ce qui devrait convenir pour la plupart des cas d'utilisation. Si ce n'est pas le cas, attachez simplement la ligne de déclenchement d'événement à l'événement de chargement de la fenêtre comme ceci :
$(window).on('load', function() { ... });