Через некоторое время у меня все еще возникают проблемы с изменением высоты iframe в FancyBox2. Я вызываю это у своего родителя:
$(document).ready(function() {
$('.fancybox').fancybox();
$('.showframe').fancybox({
openEffect : 'elastic',
closeEffect : 'elastic',
beforeShow: function(){
this.width = ($('.fancybox-iframe').contents().find('body').width());
this.height = ($('.fancybox-iframe').contents().find('body').height());
},
afterClose : function() {
location.reload();
return;
},
onUpdate : { autoHeight: true},
helpers : {
overlay : {closeClick: false}
}
});
});
И он работает правильно, когда iframe открыт, но в iframe у меня есть скрипт, который позволяет пользователям загружать изображения и отображать предварительный просмотр загруженных изображений, поэтому высота iframe меняется (в зависимости от количества загруженных фотографий), но FancyBox не будет «изменять размер по высоте». Я использую это в своем «дочернем» iframe, чтобы вызвать изменение размера:
...some functions here that handle image upload and image display...
parent.$.fancybox.scrollBox();
Теперь это работает только в Firefox, в то время как Chrome и IE будут отображать полосы прокрутки вместо изменения высоты iframe. Есть ли способ сделать это кроссбраузерным?
РЕДАКТИРОВАТЬ: я получаю этот код для работы во всех браузерах:
parent.$('.fancybox-inner').height($('#wrap').height()+20);
но проблема в том, что iframe не будет центрироваться (он просто изменит размер по высоте, но не будет повторно центрироваться на экране). Я пробовал parent.$.fancybox.center();
и parent.$.fancybox.reize();
и parent.$.fancybox.update();
и еще что-то, но это работает только в Firefox.
Я обнаружил (по счастливой случайности), что это действительно работает во всех браузерах (даже в IE8):
parent.$('.fancybox-inner').height($('#wrap').height()+30);
parent.$.fancybox.reposition();
parent.$.fancybox.update()
после изменения размера. Кроме того, форматonUpdate
должен бытьonUpdate : function(){ ... }
; попробуйте установить это внутри него:this.height = $('.fancybox-iframe').contents().find('body').innerHeight();
- person JFK   schedule 14.01.2013