如何取消打开弹出窗口之前关闭回调?#magnific 弹出窗口
How to cancel opening popup with beforeClose callback ? #magnific-popup
我正在使用带有beforeClose回调的MagnificPopup,我想根据条件取消其打开。我该怎么做?
我尝试了退货false
或$.magnificPopup.close();
但它仍然打开...
我相信有一个基本的解决方案!
谢谢
这有点棘手,但您可以通过在初始化时直接打开弹出窗口来做到这一点:
var popupDefaults = {
type: 'inline',
fixedContentPos: false,
fixedBgPos: true,
overflowY: 'auto',
closeBtnInside: true,
}
$('.open-popup-link').on("click", function(){
var condition = false;
if(!condition){
$(this).magnificPopup(popupDefaults).magnificPopup('open');
}
});
小提琴
如果将条件更改为 true
,弹出窗口将不会打开。
如果你的条件为真,你可以做的是覆盖创建弹出窗口的 JavaScript 函数。 比如:
var originalOpen = window.open;
if (condition) {
//prevent open new window
window.open = function(){return null;};
}
// after window open attempt
window.open = originalOpen
您可以使用警报和任何类型的消息框来执行此操作。
另一种方法是修改 magnificPopup...
使用 disableOn
disableOn: function(){
if ($(window).width() <= 768){
return false;
}
return true;
}
(可选):这不会停止触发弹出窗口的 DOM 元素的默认行为。
如果您使用的是在弹出窗口中加载 Youtube 视频的锚标记:
禁用将阻止弹出窗口打开
浏览器将遵循锚标签 href 的 URL!
要阻止这种情况发生,请在 DOM 元素的单击处理程序上添加额外的检查:
// Stop an anchor tag's default behavior
// Otherwise if it's a Youtube video, clicking this DOM element will land users on Youtube
$("a.my-popup").on("click", function(){
if ($(window).width() <= 768){
return false;
}
});
相关文章:
- chrome.tabs.create的回调不会在弹出窗口中触发
- JavaScript 弹出窗口阻止程序和 Ajax 回调 - C# MVC 应用程序
- JavaScript 中弹出窗口的回调
- 同步窗口.设置超时回调
- Soundcloud JS SDK - SC.如果 iOS 上安装了应用程序,则 Connect() 回调窗口无法关闭
- 窗口上的Meteor回调.open(url)未打开窗口
- 为什么要用"立即:false”;不会't关闭弹出窗口并启动回调
- 如何在内容具有content-Disposition附件时实现窗口加载回调
- IE FB.login回调未运行,XD代理窗口保持打开状态
- 在onbeforeunload事件的窗口确认时调用回调函数
- 将回调函数从任何子框架传递到顶部窗口的最有效方法
- 引导弹出窗口:使用回调来显示/隐藏覆盖-不工作
- 华丽的弹出窗口:在回调中获取当前元素
- Ajax.BeginForm JavaScript回调参数导致$(this)引用窗口而不是窗体
- 在打开Oauth弹出窗口后立即回调Facebook
- 棘轮弹出窗口关闭的JS回调
- 窗口事件侦听器内部的回调不起作用
- 如何使用窗口.Onload函数分配一个验证回调函数
- Javascript窗口写回调
- 从IE中的子窗口回调到父窗口