【问题标题】:Close Fancybox 2 window and redirect parent window关闭 Fancybox 2 窗口并重定向父窗口
【发布时间】:2012-12-12 18:55:12
【问题描述】:

我有一个 Fancybox 2 iframe 模式窗口,其中包含一个“添加到购物车”表单。提交表单后,将在 Fancybox 模式窗口中加载成功/确认页面。

我想在这个成功/确认页面上运行一个脚本来关闭 Fancybox 窗口并将父窗口重定向到这个 URL:'/shop/basket' 我该怎么做?

这是我目前得到的代码(它只是关闭 Fancybox 窗口,但不执行父窗口重定向):

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

编辑:

这就是我在 functions.js 文件中初始化 Fancybox 的方式:

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

编辑 2:

此代码可以满足我的要求 - 但谁能想到更好的方法呢?这只是我一起破解的东西:

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

【问题讨论】:

  • 你是如何初始化fancybox的,你能把那个代码贴出来吗?
  • 我已将 Fancybox 代码添加到原始帖子中,但我不确定是否需要它,因为我觉得我的解决方案需要将代码添加到包含 Fancybox 的原始脚本中关闭功能。
  • 我不认为这是上述问题的重复,因为我想关闭 Fancybox 窗口并从在成功/确认页面上自动运行的脚本重定向,而不是通过点击事件或超链接。
  • @Stephen,你到底用了什么解决方案?

标签: jquery fancybox


【解决方案1】:

不要尝试从子页面进行重定向,而是从父页面本身进行重定向。

如果您的父页面中有此代码(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";
    }
});

...您仍然需要从子页面执行parent.$.fancybox.close();

【讨论】:

  • 这是一个很好的答案,我会这样标记它,尽管我确实有一个边缘情况,这意味着我必须使用我自己的解决方案而不是这个。使用 afterClose 回调将导致父页面重定向到购物篮页面,即使用户从未单击“添加到购物车”按钮而只是决定关闭模式窗口。如果他们专门单击该按钮,我只想将他们重定向到购物车。谢谢。
  • @Stephen :这是一个很好的观点。您可以解决它传递一个变量表单子项并在重定向页面之前检查 afterClose 回调中的该变量。另一方面,我想知道如果您不使用type: "iframe",为什么要使用parent.
  • 感谢变量建议。老实说,我只是通过反复试验找到解决方法,所以我可能没有以最好的方式做事,尽管它们似乎有效。我会再次检查它,看看我是否可以改进它。谢谢。
猜你喜欢
  • 2011-08-05
  • 2011-06-30
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2012-12-15
相关资源
最近更新 更多