WordPress中关闭overlay lightbox时如何实现父页面刷新?
解决方案
你之前代码失效的核心原因:你使用的是iframe内嵌型灯箱,不属于浏览器原生弹出窗口,不存在window.opener对象,因此针对弹出窗口设计的刷新逻辑全部无效。
方案1:父页面监听灯箱关闭事件自动刷新(推荐)
直接在嵌入灯箱入口的父页面添加如下JS代码即可,只要灯箱触发关闭(包括点击外部区域、点击关闭按钮)就会自动刷新父页面:
jQuery(document).ready(function($) { // 绑定Responsive Lightbox自带的关闭事件 $(document).on('nivo-lightbox-close', function() { // 刷新当前父页面,如需跳转到指定地址可替换为 window.location.href = '你的目标地址' location.reload(); }); });
方案2:iframe内操作完成后主动触发父页面刷新
如果你的需求是仅当用户在iframe的提问页面提交完成后才关闭灯箱并刷新父页面,可以在iframe页面的表单提交成功回调中添加如下代码:
// 写在ask-questions页面的表单提交成功逻辑中 // 方式1:触发父页面绑定的关闭事件,配合方案1使用 parent.jQuery(document).trigger('nivo-lightbox-close'); // 方式2:直接操作父页面刷新并关闭灯箱,无需提前绑定事件 // parent.location.reload(); // parent.jQuery('.nivo-lightbox-overlay').data('nivoLightbox').close();
注意事项
- 需保证父页面和iframe页面为同域名,否则受浏览器同源策略限制无法跨域操作父页面对象
- 如果不需要区分操作状态,只要关闭灯箱就刷新,仅使用方案1即可
内容的提问来源于stack exchange,提问作者isbe
相关产品推荐
相关产品推荐

