12
votes

JQuery FancyBox - Empêcher la fermeture Clic en dehors de Fancybox

J'utilise le Plugin FANCYBOX pour mes fenêtres modales. Il semble que peu importe les options que j'utilise, je ne peux pas empêcher la fenêtre modale de FANCYBOX de la fermeture lorsque l'utilisateur clique sur la fenêtre modale de FANCYBOX (zone grisotée).

Y a-t-il un moyen de forcer l'utilisateur à cliquer sur le bouton X ou un bouton qui puisse déclencher l'événement proche? Cela semble que cela devrait être simple, donc j'espère que je suis juste en train de lire les exemples mal.

J'ai essayé HideonContentClick: faux mais cela ne semble pas fonctionner pour moi. Des idées?


2 commentaires

Cela fonctionne sur ce site que vous avez donné, vous avez reçu un code?


Droite, mais sur tous les exemples si vous cliquez à l'extérieur de la fenêtre modale, il se ferme. Je veux qu'il reste ouvert à moins que l'utilisateur clique sur le X (NO Où d'autre).


15 Réponses :


4
votes

Il n'y a pas d'option pour cela. Vous devrez changer le code source.

dans jquery.fancybox-1.2.1.js Vous devez commenter (ou supprimer) la ligne 341 dans la méthode _Finish: P>

//$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);


3 commentaires

Excellent. J'ai commenté la ligne de route et ajouté: $ ("# fantaisie) .bind (" cliquez sur ", $ .fn.fancybox.close); cela fait exactement ce dont j'ai besoin. Merci!


Il existe une option comme dans cool_dev Réponse ci-dessous, la modification du code entraînera des problèmes lorsque vous devez mettre à jour, vos modifications seront sur-écrites.


Comment avez-vous lu le fichier? Il y a une méthode pour convertir une JS minifiée?



1
votes

Il suffit d'ajouter une ligne suivante à votre fonction, vous ne devez rien changer dans jQuery.fancybox-1.2.6.js xxx


2 commentaires

Nous voulions seulement ce comportement sur l'une de nos boîtes fantaisie afin de changer la source n'était pas une option, merci!


Je viens de découvrir que cela ne fonctionne pas sur Google Chrome, n'a pas encore compris pourquoi.



7
votes

J'utilise FANCYBOX 1.3.1, si vous voulez forcer l'utilisateur à fermer la boîte modale uniquement en cliquant sur le bouton, vous pouvez spécifier dans la configuration:

<script type="text/javascript">
  $(document).ready(function() {
    $("#your_link").fancybox({
      'hideOnOverlayClick':false,
      'hideOnContentClick':false
    });
  });
</script>


1 commentaires

Merci beaucoup! Travaillé avec FANCYBOX 1.3.4



11
votes
<script type="text/javascript">
  $(document).ready(function() {
    $("#your_link").fancybox({
      'hideOnOverlayClick':false,
      'hideOnContentClick':false
    });
  });
</script>                              

0 commentaires

3
votes

J'ai couru dans le même "problème". Cela a fonctionné pour moi: xxx


1 commentaires

Pour la version 2.1.4, ils peuvent changer cela en $ (". Superposition de FANCYBOX)). UNBIND ();



23
votes
   jQuery(".lightbox").fancybox({
        helpers     : {
            overlay : {
                speedIn  : 0,
                speedOut : 300,
                opacity  : 0.8,
                css      : {
                    cursor : 'default'
                },
                closeClick: false
            }
        },
    });

1 commentaires

Cela ne répond pas réellement à la question initiale, qui utilise FANCYBOX V1.2.1. Pour les versions entre V1.2.6 et V1.3.4, voir la réponse de @ cool_dev. Pour Fancybox 2.x Voir Stackoverflow.com/a/8404587/1055987



3
votes

Aucune de ces réponses a fonctionné pour moi, alors je viens d'écrire un bit simple pour la dernière version de Fancybox. XXX

J'espère que cela aide :)


0 commentaires

2
votes

Le $ ("# superbox-boxbox"). UNBIND () CODE> Solution donnée pour cette question par @gabriel fonctionne, sauf que je devais le lier à la fantaisie après avoir chargé son contenu, et je ne pouvait pas engager immédiatement. Pour toute personne qui circule dans cette question, le code suivant a résolu le problème pour moi:

$('.fancybox').fancybox({'afterLoad' : function() {
    setTimeout(function() { $("#fancybox-overlay").unbind(); }, 400);}
});


0 commentaires

5
votes

Si vous utilisez FANCYBOX 1.2.6 (comme je suis sur un projet), j'ai découvert l'option HideonoverlayClick. Vous pouvez la définir sur False (par exemple HideonoverlayClick: Faux).

J'ai trouvé cette option tout en explorant de modifier le code en fonction de la suggestion GIVN par Scott Dowding.


0 commentaires

0
votes

J'ai dû utiliser une combinaison de toutes les réponses ci-dessus, car elles incluent toutes des erreurs. Certes, aucune modification du code source n'est nécessaire.

Dans mon cas, je voulais désactiver la désactivation des clics de recouvrement de la boîte, car j'avais une progression des questions qui seraient affichées séquentiellement dans la fantaisie, donc je ne voulais donc pas que les utilisateurs Pour perdre leurs progrès en cliquant accidentellement sur la superposition, mais je voulais garder cette fonctionnalité ailleurs sur la page. P>

Utilisez-le pour le désactiver: P>

$(".fancybox-overlay").bind("click", $.fancybox.close);


0 commentaires

0
votes

Utilisez simplement le code suivant:

$(document).ready(function() {
  $("a#Mypopup").fancybox({
        "hideOnOverlayClick" : false, // prevents closing clicking OUTSIE fancybox
        "hideOnContentClick" : false, // prevents closing clicking INSIDE fancybox
        "enableEscapeButton" : false  // prevents closing pressing ESCAPE key
  });
  $("a#Mypopup").trigger('click');
});

<a id="Mypopup" href="images/popup.png"><img alt="Mypopup" src="images/popup.png" /></a>


0 commentaires

2
votes

Définissez le paramètre ClosEclick CODE> sur FALSE FORT> INTÉRIEUR DE VOTRE FONCTION:

$(".video").click(function() {
    $.fancybox({
        width: 640,
        height: 385,
        helpers: { 
            overlay: {
                closeClick: false
            }
        }
    });

    return false;
});


1 commentaires

S'il vous plaît ne criez pas, surtout pas dans audacieux :-)



1
votes

Vous pouvez empêcher la boîte de fantaisie en appliquant ces paramètres xxx

Obtenez le paramètre Fancybox du lien suivant

http://www.fancybox.net/api


0 commentaires

6
votes

Pour ce problème, essayez de cette façon xxx

espère que cela aide.


2 commentaires

Cela ne répond pas réellement à la question initiale, qui utilise FANCYBOX V1.2.1. Pour les versions entre V1.2.6 et V1.3.4, voir la réponse de @ cool_dev. Pour Fancybox 2.x Voir Stackoverflow.com/a/8404587/1055987


@Jkf: merci je vais améliorer mes connaissances



-1
votes

Vous pouvez définir le closeclick par défaut sur la superposition sur FALSE. A travaillé pour moi dans la version 2.1.5.

$.fancybox.helpers.overlay.defaults.closeClick=false;


0 commentaires