gpt4 book ai didi

javascript - 小时候打开 fancybox(iframe)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:32 25 4
gpt4 key购买 nike

如果可能的话,我想使用 iframe 作为父项的子项打开一个 fancybox。

是否有可能打开一个 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() 函数。

我的问题的解决方法还可以告诉我为什么我不能像使用 alert 或 confirm 那样重写关闭函数。

编辑 2:感谢 Raohmaru 和 JFK,在看到 fiddle 工作后,我已经实现了我需要的功能,但是一件奇怪的事情(对我来说)正在发生:

工作代码,如果其他人需要它是:

(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 中。

最佳答案

您可以做的是验证页面是否已在 fancybox 中打开并执行正确的 fancybox 方法,否则只需使用常规的 javascript 方法(即 window.close())

话虽如此,在打开的页面中(通过 window.open() 或 fancybox)你可能有一个关闭它的函数,比如

function closePopup(){
window.close();
}

关联到关闭按钮/链接,例如

<a href="javascript:;" onclick="closePopup()" >Close Window</a>

肯定会关闭弹出窗口但不会关闭 fancybox,因此您可以添加以下内容:

function closePopup(){
window.close();
if(parent.jQuery().fancybox) {
parent.jQuery.fancybox.close();
}
}

这将适用于弹出窗口或 fancybox。

关于javascript - 小时候打开 fancybox(iframe)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com