Estoy usando el Fancybox plugin para mi modal windows. Parece que no importa lo que las opciones de uso I no puede evitar que el fancybox ventana modal de cierre cuando el usuario hace clic fuera de la fancybox ventana modal (de color gris).

Es allí una manera de forzar a que el usuario haga clic en la X o un botón que puedo activar el evento de cierre? Este parece que debería ser simple, así que estoy esperando estoy leyendo los ejemplos mal.

He intentado hideOnContentClick: false pero que no parece estar funcionando para mí. Alguna idea?

Se trabaja en ese sitio enlace que te dio, tienes algún código?
A la derecha, pero en todos los ejemplos, si hace clic fuera de la ventana modal que se cierra. Quiero que permanezca abierta a menos que el usuario hace clic en la X (en ningún otro lugar).

OriginalEl autor Mike | 2009-09-01

15 Comentarios

  1. 4

    No hay ninguna opción para eso. Usted tendrá que cambiar el código fuente.

    En jquery.fancybox-1.2.1.js deberá comentario (o eliminar) de la línea 341 en el _finish método:

    //$("#fancy_overlay, #fancy_close").bind("click", $.fn.fancybox.close);
    Excelente. Me comentó que la línea de salida, y añadió: $(«#fancy_close).bind(«click», $.fn.fancybox.cerrar); Esto es exactamente lo que necesito. Gracias!
    hay una opción como en cool_dev respuesta a continuación, editar el código de llevar a problemas cuando usted necesita para actualizar, los cambios va a ser sobre-escrito
    ¿cómo leer el archivo . hay un método para convertir record de Js ?

    OriginalEl autor Scott Dowding

  2. 24
       jQuery(".lightbox").fancybox({
            helpers     : {
                overlay : {
                    speedIn  : 0,
                    speedOut : 300,
                    opacity  : 0.8,
                    css      : {
                        cursor : 'default'
                    },
                    closeClick: false
                }
            },
        });
    en realidad no responde a la pregunta original, que utiliza fancybox v1.2.1. Para las versiones entre v1.2.6 y v1.3.4 ver @cool_dev la respuesta. Para fancybox 2.x véase stackoverflow.com/a/8404587/1055987
    A mí me funciona! gracias por el código muy útil!

    OriginalEl autor user1421770

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

    OriginalEl autor cool_dev

  4. 7

    Estoy usando fancybox 1.3.1, si quieres forzar al usuario a cerrar el cuadro de modal con SOLO hacer clic en el botón, se puede especificar en la configuración:

    <script type="text/javascript">
      $(document).ready(function() {
        $("#your_link").fancybox({
          'hideOnOverlayClick':false,
          'hideOnContentClick':false
        });
      });
    </script>
    Muchas gracias! Trabajado con fancybox 1.3.4
    No funciona en fancybox 2.0+

    OriginalEl autor justinw

  5. 6

    Para este problema, por favor intenta de esta forma

    $("YourElement").fancybox({
     helpers: {
            overlay: { closeClick: false } //Disable click outside event
        }

    Espero que esto ayude.

    en realidad no responde a la pregunta original, que utiliza fancybox v1.2.1. Para las versiones entre v1.2.6 y v1.3.4 ver @cool_dev la respuesta. Para fancybox 2.x véase stackoverflow.com/a/8404587/1055987
    Gracias voy a mejorar mi conocimiento

    OriginalEl autor Binh LE

  6. 5

    Si usted está usando Fancybox 1.2.6 (como estoy en un proyecto), me enteré de que la opción hideOnOverlayClick. Se puede establecer a false (por ejemplo, hideOnOverlayClick: false).

    He encontrado esta opción, mientras que la exploración de modificar el código que se basa en la sugerencia de givn por Scott Dowding.

    OriginalEl autor Mudasser Mian

  7. 3

    Me encontré con el mismo «problema». Esto funcionó para mí:

    $("#fancybox-overlay").unbind();
    para la versión 2.1.4 se puede cambiar esto a $(«.fancybox-overlay»).unbind();

    OriginalEl autor Gabriel

  8. 3

    ninguna de las anteriores trabajó para mí, así que me escribió una simple bits para la versión más reciente de fancybox.

    function load(parameters) {
        $('.fancybox-outer').after('<a href="javascript:;" onclick="javascript:{parent.$.fancybox.close();}" class="fancybox-item fancybox-close" title="Close"></a>');
    }
    
    $(document).ready(function () {
        $(".various").fancybox({ 
            modal: true,
            afterLoad: load
        });
    });

    Espero que esta ayuda 🙂

    la última versión de fancybox de verificación stackoverflow.com/a/8404587/1055987

    OriginalEl autor Mandeep Singh Bhangu

  9. 2

    La $("#fancybox-overlay").unbind() solución dada para esta pregunta por @Gabriel funciona, excepto la que yo necesitaba para enlazar a la fancybox después de que las cargas de su contenido, y no podía separar de inmediato. Para cualquier persona que se ejecuta en este problema, el siguiente código resuelve el problema para mí:

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

    Los 400 ms de retardo tengo trabajo para mí. Se trabajó con 300ms, pero no quería arriesgarse.

    OriginalEl autor atwede

  10. 2

    Conjunto de la closeClick parámetro para falso en el interior de su función:

    $(".video").click(function() {
        $.fancybox({
            width: 640,
            height: 385,
            helpers: { 
                overlay: {
                    closeClick: false
                }
            }
        });
    
        return false;
    });
    por favor, no grites, especialmente no en Negrita 🙂

    OriginalEl autor T.Todua

  11. 1

    Acaba de agregar la siguiente línea a su función, usted no tiene que cambiar nada en jquery.fancybox-1.2.6.js

    callbackOnStart : function() {$("#fancy_overlay").bind("click","null");},
    Sólo queríamos este comportamiento en una de nuestras cajas de lujo para cambiar la fuente no era una opción, Gracias!
    Acabo de descubrir que esto no funciona en Google Chrome, no he averiguado por qué todavía.

    OriginalEl autor Raj Gohil

  12. 1

    puede evitar que la elegante caja para cerrar mediante la aplicación de estas

     'showCloseButton'=>false, //hide close button from fancybox
     'hideOnOverlayClick'=>false, //outside of fancybox click disabled
     'enableEscapeButton'=>false, //disable close on escape key press

    obtener la fancybox de configuración desde el siguiente enlace

    http://www.fancybox.net/api

    OriginalEl autor Kailas

  13. 0

    Tuve que usar una combinación de todas las anteriores respuestas, ya que todos ellos incluyen errores. Ciertamente, ninguna edición del código fuente es necesario.

    En mi caso, yo quería desactivar la superposición de clics de cerrar la caja como el que yo tenía una progresión de las preguntas que se muestran de forma secuencial dentro de la fancybox, por lo que no desea que los usuarios a perder su progreso por accidente al hacer clic en la plantilla, pero quería mantener la funcionalidad otro lugar de la página.

    Usar esto para desactivarlo:

    $(".fancybox-overlay").unbind();

    Usar esto para volver a habilitarlo:

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

    OriginalEl autor

  14. 0

    Sólo utilice el siguiente código:

    $(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>

    OriginalEl autor Parul

  15. -1

    Puede establecer el valor predeterminado closeClick en la superposición falso. Ha trabajado para mí en la versión 2.1.5.

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

    OriginalEl autor Muller Digital

Dejar respuesta

Please enter your comment!
Please enter your name here