2012-12-12 114 views
0

我有一個Fancybox 2 iframe模式窗口,其中包含「添加到購物車」窗體。提交表單後,將在Fancybox模式窗口中加載成功/確認頁面。關閉Fancybox 2窗口並重定向父窗口

我想在此成功/確認頁面上運行一個腳本,關閉Fancybox窗口並將父窗口重定向到此URL:'/ shop/basket'我該怎麼做?

下面的代碼我在此刻得到了(這只是關閉的fancybox窗口,但不會做父窗口重定向):

<script type="text/javascript"> 
    $(function() { parent.$.fancybox.close(); }); 
</script> 

編輯:

這是怎麼了我

$(".add-to-cart-popup").fancybox({ 
    width  : 580, 
    height  : 744, 
    closeClick : false, 
    scrolling : 'auto' 
}); 

編輯2:

牛逼我functions.js文件中初始化的fancybox他的代碼做我正在尋找的東西 - 但任何人都可以想到更好的方法嗎?這只是我一起入侵的東西:

<script type="text/javascript"> 
    $(function() { parent.$.fancybox.close(); }); 
    window.parent.location.href = '/shop/basket'; 
</script> 
+0

你如何初始化的fancybox執行parent.$.fancybox.close();,你可以張貼代碼? – adeneo

+0

可能的重複:http://stackoverflow.com/questions/3660710/fancybox-close-from-within-iframe-and-take-parent-page-to-the-link – Jason

+0

我已經將Fancybox代碼添加到原始雖然我不確定是否需要它,因爲我覺得我的解決方案需要添加到包含Fancybox關閉功能的原始腳本的代碼中。 – Stephen

回答

7

不要嘗試從子頁面,而是從父頁面本身進行重定向。

如果你有這樣的代碼在你的父頁面(functions.js):

$(".add-to-cart-popup").fancybox({ 
    width  : 580, 
    height  : 744, 
    closeClick : false, 
    scrolling : 'auto' 
}); 

然後,只需添加afterClose回調到什麼樣子;

$(".add-to-cart-popup").fancybox({ 
    width  : 580, 
    height  : 744, 
    closeClick : false, 
    scrolling : 'auto', 
    afterClose : function() { 
     location.href = "/shop/basket"; 
    } 
}); 

...你仍然需要從子頁面

+0

這是一個很好的答案,我會將其標記爲這樣,雖然我確實有一個邊緣案例,這意味着我必須使用我自己的解決方案而不是這個。使用afterClose回調將導致父頁面重定向到購物籃頁面,即使用戶從未點擊過「添加到購物車」按鈕並剛剛決定關閉模式窗口。如果他們專門點擊了該按鈕,我只想將它們重定向到購物車。謝謝。 – Stephen

+1

@Stephen:這是一個很好的觀點。你可以解決方法,它傳遞一個變量表單子並在重定向頁面之前檢查'afterClose'回調中的變量。另一方面,我想知道爲什麼你使用'parent.',如果你不使用'type:「iframe」' – JFK

+0

感謝您的變量建議。我會誠實地說,我只是通過試驗和錯誤來找到我的方式,所以我可能不會以最好的方式做事,儘管他們似乎有效。我會再次檢查一遍,看看我能否改進它。謝謝。 – Stephen