如何取消与beforeClose回调开弹出? #荡气回肠 - 弹出

问题描述 投票:1回答:3

我使用的是MagnificPopup与beforeClose回调,我想这取决于条件,取消其打开。我怎样才能做到这一点 ?

我试过一回false$.magnificPopup.close();但它仍然打开...

我敢肯定,有一个基本的解决方案!

谢谢

javascript magnific-popup
3个回答
1
投票

这是一个有点棘手,但你可以通过直接在初始化时打开弹出做到这一点:

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,弹出不会打开。


0
投票

你可以做的是能够覆盖创建弹出,如果你的条件为真JavaScript函数。喜欢:

var originalOpen = window.open;
if (condition) {
    //prevent open new window
    window.open = function(){return null;};
}

// after window open attempt
window.open = originalOpen

你可以用警报做到这一点,任何消息框。

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


0
投票

使用disableOn

disableOn: function(){
    if ($(window).width() <= 768){
        return false;
    }
    return true;
}

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

如果您使用的是加载在一个弹出一个YouTube视频中的锚标记:

  • 该disableOn将停止开放弹出
  • 浏览器将遵循锚标记的href的网址!

为了阻止这种情况发生,加上对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;
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.