如果可能的话,我希望使用 iframe 作为父母的孩子打开一个花式框。
是否可以打开一个 iframe(用 fancybox 构建)并让浏览器相信我已经使用 window.open 打开了它,这样功能就像window.close()
或window.opener.location.reload()
仍然可以工作?
fancybox 代码很简单:
$("#custom_alert").fancybox({
'width' : w,
'height' : h,
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'type' : 'iframe',
//'scrolling' : 'no'
}).trigger('click');
编辑:我不能使用如下功能:
function closePopup(){
window.close();
if(parent.jQuery().fancybox) {
parent.jQuery.fancybox.close();
}
}
我必须使用 window.close() 函数。
解决我的问题的方法也可以是告诉我为什么我不能像使用警报或确认那样重写关闭函数。
编辑 2:感谢 Raohmaru 和 JFK,在看到小提琴工作后,我已经完成了我需要的功能,但是(对我来说)一件奇怪的事情正在发生:
工作代码,如果其他人需要它是:
(function() {
var proxied = window.close;
window.close = function() {
if(parent.jQuery().fancybox) {
parent.jQuery.fancybox.close();
}
else
return proxied.apply(this, arguments);
};
})();
这适用于 fancybox 和 window.open 案例。
我的问题是:我在索引中包含了一些 .js 文件:
overwrites
fancybox pack
general scripts
如果我将该函数放在通用脚本中,它可以完美运行,但是如果我将它放在覆盖 js 中(它应该在哪里),它就不起作用(没有控制台错误,只是没有任何反应)。我曾尝试交换包含的位置,但没有运气。
这就是为什么我不能从一开始就让它工作的原因,因为我总是将它包含在覆盖的 .js 中。