【问题标题】:Issue in closing iframe using jQuery使用 jQuery 关闭 iframe 的问题
【发布时间】:2013-10-11 10:56:53
【问题描述】:

我有以下场景。

在产品展示页面上,当用户点击登录时,登录弹出窗口会在 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。

请帮助解决这个问题。

【问题讨论】:

  • 尝试调用parent.$.fancybox.close(); 而不是window.jQuery('#fancybox-frame').remove();
  • 嘿Pete,上面提供的语句确实关闭了iframe,但是它没有加载下一个fancybox。此外,在 parent.$.fancybox.close(); 之后没有任何语句;正在被执行。另外我想知道,由于同源策略,这是否可以在跨域网络中工作?
  • 啊我猜是因为你在实际的 iframe 中执行脚本,你不能关闭它。尝试删除前一行,然后像这样调用你的新 fancybox:parent.jQuery.fancybox({ 不确定是否是同一来源
  • 我之前使用的是同一个函数 parent.jQuery.fancybox({ 但是由于舞台上的同源策略它给出了问题,我不得不恢复我的更改。

标签: jquery iframe


【解决方案1】:

试试这个

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

希望对你有帮助

【讨论】:

  • 我收到错误作为 parent.jQuery.fn.fancybox.close();不是函数。请原谅我是 ATG 开发人员,而不是 jQuery 专家。同样如前所述,这不会在跨域平台上抛出问题吗?
猜你喜欢
  • 1970-01-01
  • 2012-06-21
  • 2016-04-08
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多