Il y a plus de réponses dans this SO post. Malheureusement, je ne peux pas trouver une "vraie" solution, mais d'autres personnes remplacent le recouvrement de page CSS (# fancybox-overlay) pour inclure un spinner. Ensuite, lorsque la page iframe'd se charge, elle est placée sur le spinner.
EDIT:
J'ai renoncé à l'aide fancybox pour gérer l'image de chargement et pensé que je partage ma solution. J'ai ajouté une charge gif
position absolue de mon propre à la page, le montrer juste avant d'appeler fancybox et je peux capturer l'événement chargé iframe avec JQuery pour cacher la fileuse, comme ceci:
$("#progressIcon").show();
$.fancybox.open({ type: "iframe", minWidth: 990, minHeight: 690, href: URL, title: "Basket" });
$("iframe").load(function()
{
$("#progressIcon").hide();
});
si vous n'êtes pas appelle fancybox manuellement comme je suis, je suppose que vous pourriez tout aussi facilement joindre ce code par un événement de clic, à savoir:
$('.fancybox').fancybox();
$('.fancybox').click(/* ... */);
J'ai aussi remarqué en jouant dans la source qu'il semble fancybox (de v2.0.6) Comme fancybox utilise l'événement load pour afficher/masquer l'animation de chargement si autoSize est utilisé avec un iFrame, bien que je n'ai pas testé la théorie.
if (type === 'iframe' && current.autoSize) {
F.showLoading();
F._setDimension();
F.inner.css('overflow', current.scrolling);
content.bind({
onCancel : function() {
$(this).unbind();
F._afterZoomOut();
},
load : function() {
F.hideLoading();
try {
if (this.contentWindow.document.location) {
F.current.height = $(this).contents().find('body').height();
}
} catch (e) {
F.current.autoSize = false;
}
F[ F.isOpen ? '_afterZoomIn' : '_beforeShow']();
}
}).appendTo(F.inner);
} else {
F.inner.append(content);
F._beforeShow();
}
J'ai essayé de le faire aussi bien. J'ai remarqué que rien ne s'affichait tant que l'iframe n'avait pas fini de se charger complètement. Cela n'arrive PAS avec les pages normales. Si vous insérez des pages qui ont normalement une barre de chargement, celles-ci ne s'affichent pas tant que le chargement n'est pas terminé. rendant cette barre inutile. – WhyNotHugo