Необычная коробка не открывается в iFrame во второй раз - PullRequest
5 голосов
/ 23 февраля 2011

первый пост - Привет! Я использую fancybox ( Fancybox homepage ) для отображения модальных окон. Я пытаюсь отобразить скрытый div с iFrame внутри этого div. Работает отлично. При втором нажатии на ссылку, он не загружает iFrame (не ошибка 404, просто в iFrame нет содержимого). Кто-нибудь может помочь?

Важные биты:

<script type="text/javascript">
function openIframeLink() {
    $.fancybox({
        'type'          : 'inline',
        'href'          : '#data'
    });
};
</script>

И HTML:

<div id="hiddenElement">
    <iframe id="data" src="frames/frame4.php" width="100%" height="300"></iframe>
</div>

Ответы [ 4 ]

4 голосов
/ 11 января 2012

Была такая же проблема.Основываясь на оценке Фроде, что он удаляет атрибут src, я добавил обратный вызов onClosed на мой вызов fancybox и смог добавить его обратно в:

jQuery('#iframe_element').fancybox({
    'onClosed': reloadIframe
});

function reloadIframe() {
    jQuery('#iframe_element').attr('src','http://example.com');
}
3 голосов
/ 23 февраля 2011

Похоже, что fancybox извлекает элемент iframe из DOM и помещает его в свой собственный контейнер.Затем, когда вы закрываете fancybox, он пытается вставить его туда, где он был изначально - но ему удается потерять значение атрибута src.

Одобренный метод открытия iframe парня из fancybox выглядит следующим образом.

<a id="mylink" class="iframe" href="frames/frame4.php">mylink</a>
<script type="text/javascript">
    $("#mylink").fancybox();
</script>

Один из способов обойти это - клонировать элемент iframe, т. Е.

function openIframeLink() {
    $.fancybox( {content: $('#data').clone()} );
}

Очевидно, что он не идеален. Я бы хотел услышать кого-то более знакомого.

0 голосов
/ 23 ноября 2012

Это мой способ восстановления атрибута src без предварительного знания элемента.

Может помочь кому-нибудь ..

$(".fancybox.iframe").each(function(){
    var target = $($(this).attr("href"));
    var src = target.attr("src");
    $(this).fancybox({
        'type': "inline",
        'content': target,
        'onClosed': function(){
            target.attr("src", src);
        }
    });
});
0 голосов
/ 16 августа 2012

Fancybox теряет атрибут src.Вот обходной путь, который я использую с тех пор

function openIframeLink() { 
    /* Grab the src before fancybox loses it */ 
    theSrc = $("#data").attr('src'); 
    $.fancybox({ 
        'type'     : 'inline', 
        'href'     : '#data', 
        onClosed     : function()
        { 
            $('#data').attr('src', theSrc); 
        } 
    }); 
};
...