Во-первых, я надеюсь, вы понимаете, что вы имеете в виду, когда вы говорите «FancyBox IFrame», что это означает, что вы открываете внешний файл HTML/PHP используя опцию FancyBox в iframe
, либо установить его в качестве class
в вашей ссылке, как :
<a href="external.html" class="fancybox fancybox.iframe">open external file in fancybox</a>
(я предполагаю, что вы используете FancyBox v2.x, поскольку параметры в вашем сценарии) ... или в качестве опции в пользовательском сценарии:
$(".fancybox").fancybox({
width: 620, // or whatever
heigh: 320,
type: "iframe"
});
Во-вторых, вы должны остерегаться что варианты для fancybox v1.3.x
и несовместимы друг с другом. Например, вы используете в своем скрипте fitToView
(fancybox v2.x) и autoScale
(v1.3.x). Если вы действительно используете fancybox v2.x, autoScale
не будет распознаваться.
В-третьих, resize()
не является вариантом для fancybox v1.3.x или v2.x. При использовании v2.x, вы должны лучше использовать $.fancybox.update()
Наконец, можно только (я должен сказать, «самый легкий»), как я думаю, что на «авто» размер FancyBox при открытии в режиме iframe
является:
- вы должны иметь контроль над страницей
external.html
, которую вы хотите открыть (вы должны владеть ею и работать в конечном итоге в том же домене), чтобы вы могли добавлять элементы, которые fancybox необходимо изменить. Другие страницы, которые не являются вашими (например, picssel.com
), не позволят автоматически изменять размер iframe (вы можете изменить размер вручную, но я не думаю, что это идея.)
- вы должны использовать fancybox не менее 2.0.6+
Практические советы?
Корректировать external.html
файл и установить размеры в <html>
теге как
<html lang="en" style="width: 800px; height: 400px;">
(вы можете присвоить height
свойство только хотя)
Затем используйте опцию обратного вызова beforeShow
, чтобы получить размер от iframe
нравится:
beforeShow: function(){
this.width = $('.fancybox-iframe').contents().find('html').width();
this.height = $('.fancybox-iframe').contents().find('html').height();
}
также, fitToView
должно быть установлено на false
Проверьте код https://stackoverflow.com/a/10776520/1055987 на образец кода, который также включает в себя ДЕМО.
Это отличный и хорошо типизированный ответ. Oh Fancybox –
О, мальчик, я был глупый, не так ли !? Я действительно владею контентом, который связан с ним, и он находится в том же месте. Я также использую последнюю версию FancyBox, загружаемую с их сайта. Поэтому я должен добавить функцию beforeShow к коду, который я изначально перечислял, и удалить свойства ширины и высоты из этого исходного кода? Спасибо Вам большое! – HedKandiMan
@ user1440201 Если вы добавляете размеры на внешнюю страницу в тег '', то, я думаю, вы можете удалить 'width' и' height' из своего кода. Пусть опция 'beforeShow' получает размер от' iframe'. Если вы считаете, что это правильный ответ, пожалуйста, не забудьте принять его. http://meta.stackexchange.com/a/5235 – JFK