首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过beforeClose回调取消打开弹窗?#神奇-弹窗

如何通过beforeClose回调取消打开弹窗?#神奇-弹窗
EN

Stack Overflow用户
提问于 2014-04-02 21:59:20
回答 3查看 1.4K关注 0票数 1

我正在使用一个带有beforeClose回调的MagnificPopup,我想根据条件取消它的打开。我该怎么做呢?

我尝试了返回false$.magnificPopup.close();,但它仍然打开...

我相信有一个基本的解决方案!

谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-04-04 17:26:28

这有点棘手,但你可以通过在初始化时直接打开弹出窗口来实现:

代码语言:javascript
复制
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');
    }
});

fiddle

如果将条件更改为true,弹出窗口将不会打开。

票数 1
EN

Stack Overflow用户

发布于 2014-04-02 22:54:46

如果您的条件为真,那么您可以做的就是覆盖创建弹出窗口的javascript函数。像这样:

代码语言:javascript
复制
var originalOpen = window.open;
if (condition) {
    //prevent open new window
    window.open = function(){return null;};
}

// after window open attempt
window.open = originalOpen

您可以使用alert和任何类型的消息框来完成此操作。

另一种方法是修改magnificPopup...

票数 0
EN

Stack Overflow用户

发布于 2019-02-08 04:32:01

使用

代码语言:javascript
复制
disableOn: function(){
    if ($(window).width() <= 768){
        return false;
    }
    return true;
}

(可选):这不会停止触发弹出窗口的DOM元素的默认行为。

如果您使用的是在弹出中加载Youtube视频的锚定标记,则为

  • disableOn将阻止弹出窗口打开
  • 浏览器将遵循锚定标记的href!

要阻止这种情况发生,请在DOM元素的click处理程序上添加额外的检查:

代码语言:javascript
复制
// 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;
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22813860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档