2012-12-12 94 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