Есть еще ответы в этом ТАК сообщении.К сожалению, я не могу найти «реальное» решение, но другие люди заменяют CSS наложения страниц (# fancybox-overlay), чтобы включить спиннер.Затем, когда страница iframe в конечном итоге загружается, она помещается поверх спиннера.
РЕДАКТИРОВАТЬ:
Я отказался от использования fancybox для обработки загружаемого изображения и подумалподелюсь своим решением.Я добавил абсолютно позиционную загрузку gif
своей собственной страницы, покажу ее перед вызовом fancybox, и я могу захватить загруженное событие iframe с помощью JQuery, чтобы скрыть счетчик, например:
$( "#progressIcon" ).show();
$.fancybox.open( { type: "iframe", minWidth: 990, minHeight: 690, href: URL, title: "Basket" } );
$( "iframe" ).load( function ()
{
$( "#progressIcon" ).hide();
} );
ifвы не вызываете fancybox вручную, как я, я полагаю, вы могли бы так же легко прикрепить этот код через событие щелчка, например:
$('.fancybox').fancybox();
$('.fancybox').click( /* ... */ );
Я также заметил это во время игры в fancybox (v2.0.6) источник, который выглядит как fancybox, использует событие загрузки, чтобы показать / скрыть загрузочную анимацию, если autoSize используется с iFrame, хотя я не проверял теорию.
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();
}