2013-10-11 5 views
1

У меня есть следующий сценарий.Проблема при закрытии iframe с использованием jQuery

На странице отображения продукта, когда пользователь нажимает на вход, всплывающее окно входа открывается в iframe.

jQuery.fancybox({ 
    'padding' : 0, 
    'transitionIn' : 'none', 
    'transitionOut' : 'none', 
    'scrolling' : 'no', 
    'autoDimensions' : false, 
    'autoScale' : false, 
    'width' : frameWidth, 
    'height' : frameHeight, 
    'type' : 'iframe', 
    'href' : _this.attr("href"), 
    'onComplete' : function() { 
     $.fancybox.resize(); 
    }, 
    'onClosed' : function() { 
     if(isReloadOnClose) 
      closeAndRefresh(); 
    } 
}); 

Когда пользователь успешно подписывается, я открываю другое всплывающее окно, которое запрашивает действия пользователя.

jQuery(document).ready(function() { 
    window.jQuery('#fancybox-frame').remove(); 
    var productId = document.getElementById("productId").value; 
    var skuId = document.getElementById("skuId").value; 

    jQuery.fancybox({ 
     href: "/shop/wishlist-modal-add.jsp?productId="+productId+"&skuId="+skuId, 
     type: 'ajax', 
     centerOnScroll: true, 
     onComplete: function(){ 
      jQuery.fancybox.resize(); 
     }, 
     onClosed: function(){ 
      $('#fancybox-content').css({width:'+=30px;'}); 
      jQuery.fancybox.resize(); 
     } 
    }); 
}); 

Проблема я столкнулся в том, что второе всплывающее окно открывается внутрь только первый ifarme, несмотря на то, что я удаления IFRAME.

Просьба помочь в разрешении этого вопроса.

+0

попробуйте позвонить 'родителя $ fancybox.close();.. 'Вместо' window.jQuery ('# FancyBox-кадр'). remove(); ' – Pete

+0

Hey Pete, приведенное выше утверждение действительно закрывает iframe, однако оно не загружает следующий fancybox. Кроме того, ни одно из утверждений после родителя. $. Fancybox.close(); исполняется. Также интересно, будет ли эта работа работать в междоменной сети из-за того же самого правила происхождения? –

+0

ah Я думаю, потому что вы выполняете скрипт в фактическом iframe, вы не можете его закрыть. попробуйте удалить предыдущую строку, а затем вызовите свой новый fancybox следующим образом: 'parent.jQuery.fancybox ({' не уверен в том же самом происхождении, хотя – Pete

ответ

0

попробовать этот

parent.jQuery.fn.fancybox.close(); 

надеюсь, что это поможет вам

+0

У меня ошибка, поскольку parent.jQuery.fn.fancybox.close(); не является функцией. Простите меня Я разработчик ATG, а не эксперт по jQuery. Также, как было сказано ранее, не будет ли эта проблема бросить на междоменной платформе? –

Смежные вопросы