【发布时间】: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({ 但是由于舞台上的同源策略它给出了问题,我不得不恢复我的更改。