9
votes

Comment déterminer quand FancyBox est ouvert?

J'ai besoin de savoir que FANCYBOX a été ouvert que pour permettre ou refuser une autre fonction de démarrer.

Fonctions de construction Fancybox comme "Onstart" ou "Oncle" "ne fonctionne pas.

Je parle de la version 1.3.0 RC2


0 commentaires

8 Réponses :


3
votes

Je ne suis pas sûr de ce que vous entendez par des fonctions intégrées. FANCYBOX a des rappels qui appellent des fonctions définies par l'utilisateur (que vous devez vous rendre). Comme: xxx pré>

Vous pouvez vérifier le fantaisie_content code> div pour voir s'il a quelque chose à l'intérieur. (Si cela a, alors FANCYBOX est ouvert). P>

if ( $('#fancy_content:empty').length > 0 )
{
  // Is empty
}


0 commentaires

10
votes

La version que vous utilisez apparemment ne correspond pas à la documentation; J'ai regardé la source et j'ai vu que les noms des options étaient différents des documents en ligne. Je viens de tester les éléments suivants avec 1.3RC2:

$(document).ready(function() {

    function myStartFunction() { alert('fancy box opened'); }

    $("a#inline").fancybox({
        'onStart': myStartFunction
    });  
});


1 commentaires

Haha, si vous pouvez voir à la source de Fancybox.net/Dev/130 Ils appellent un 'OnStart 'et etc du deuxième param. De cette façon, cela ne fonctionne pas. Merci beaucoup Erik ^^



2
votes

Cela semble fonctionner pour moi:

        isLoaded : function(){
            return $('#fancybox-content').html()!='';
        }


0 commentaires

8
votes

Essayez d'utiliser des méthodes xxx

ce code fonctionne bien xxx


1 commentaires

L'OP dit Je parle de la version 1.3.0 RC2



4
votes

Si vous recherchez un moyen de déterminer si FANCYBOX est ouvert ou non (au lieu d'un événement déclenché lors de l'ouverture FANCYBOX), alors à partir de FANCYBOX V2, vous pouvez utiliser le $. Fancybox.isopen Propriété. Il n'est pas documenté (au moins je n'ai trouvé aucune référence) mais cela fonctionne.

Exemple: xxx

L'exemple ci-dessus empêche l'ouverture une seconde boîte de fantaisie si on est déjà ouverte.


0 commentaires

1
votes

Si vous avez plusieurs divication que vous utilisez pour FANCYBOX, le code suivant peut être une solution meilleure et plus universelle: xxx

note également que la teneur en fantaisie peut ne pas être toujours vide, même si FANCYBOX est fermé.


0 commentaires

13
votes

$. FANCYBOX.ISOPEN (BOOL) Indique si FANCYBOX est ouvert.


2 commentaires

meilleure et jolie solution, devrait être une réponse


Pour une raison quelconque, cela retourne non défini quand il est ouvert.



1
votes

Réponse pour 2018 décembre.

    <head>
        <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.2/dist/jquery.fancybox.min.css" />
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="//cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.2/dist/jquery.fancybox.min.js"></script>
    </head>
    <body>
        <a data-fancybox data-options='{"iframe" : {"css" : {"width" : "80%", "height" : "80%"}}}' href="https://www.google.com/maps/search/?api=1&query=China" class="btn btn-primary" id="ffbox">Display Google Map</a>
    </body>


0 commentaires