Pregunta

Estoy tratando de cerrar FancyBox desde dentro del marco flotante, pero siempre es parent.$ undefined. Este es mi iframe JavaScript:

 <script type='text/javascript' 
  src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'>
 </script>
 <script type="text/javascript">
 jQuery(document).ready(function($){
     (function($) {
         $.fn.closeFancyBox = function() {
             $(this).click(function() {
                 parent.$.fancybox.close();
             });
         };
      })(jQuery);
      $('#cancel').closeFancyBox();
      });
 });
 </script>

Sustitución parent.$.fancybox.close(); con alert('clicked'); funciona bien. No entiendo por qué es parent.$ undefined cuando el marco flotante está en el mismo dominio.

Estoy usando WordPress 2.9.1, con la FancyBox para Wordpress plug-in.

  • página principal: //server.local/web/test/index.php
  • página de iframe: //server.local/web/test/wp-content/plugins/wp-test/test.htm

La primera de estas URL es la página principal, el segundo es la página iframe; server.local es mi servidor de prueba en casa.

¿Alguna idea? Puedo Pastebin todo el origen de si sería útil.

¿Fue útil?

Solución 8

Pasamos unas cuantas horas tratando de depurar este y llegó a ninguna parte. Así que me cambié a cabo el 'FancyBox para WordPress' plugin con la última versión del FancyBox, y lo arreglaron. Realmente debería haber intentado eso antes.

Después de haber pasado algún tiempo con WordPress y sus plugins diferentes, recomiendo llamar a las cosas de forma manual y no depender de plugins. Que sólo añade otra capa de complejidad que, si sabes lo que estás haciendo, no tiene por qué estar allí.

Gracias a Doug por señalar la sintaxis adecuada para el iframe para ventana padre jQuery en WordPress.

Otros consejos

no está definido porque WordPress jQuery funciona en noConflict modo. Use este lugar:

parent.jQuery.fancybox.close();

significa modo noConflict $ no es igual a jQuery. Usted tiene que utilizar explícitamente jQuery acceder a lo que normalmente se puede acceder con $.

Mi respuesta no está relacionada con wordpress, pero uno de FancyBox en general.

en el iframe, si ha incluido la secuencia de comandos de jQuery principal (jquery-1.5.2.min.js), entonces se entrará en conflicto con el de la página principal, y padres. $. FancyBox no funcionará en este caso.

otras cosas relacionadas jquery (como por ejemplo: las pestañas) funcionará en el interior del marco flotante. por lo tanto, él no se produce a un programador novato que el segundo guión jquery dentro del marco flotante es el malo.

Cualquier variación de parent.fancybox.close () no funcionó para mí, debe haber algún conflicto lib.

Aquí está mi solución de trabajo para la última FancyBox, se debe utilizar la propiedad CSS display en lugar de método .hide () como en el caso de que FancyBox no se abrirá de nuevo.

parent.jQuery('#fancybox-overlay').css('display', 'none');
parent.jQuery('#fancybox-wrap').css('display', 'none');

he tenido que hacer esto:

window.top.window $ fancybox.close ();..

Got tipo de error antes.

Esto funciona para mí;)

<a href="javascript:parent.jQuery.fn.fancybox.close();" >

Gracias por este post, lo que realmente me guiaron un poco ... me siento mal porque me llevó a sólo unos minutos y yo sabemos lo frustrante FancyBox para Wordpress es !!

Ninguna de las sugerencias trabajado para mí. Tenía que trabajar alrededor de ella usando el siguiente código. La última versión puede ser el apoyo a la parent.jQuery.fancybox.close (); enfoque, pero las versiones anteriores no funcionan con eso.

Para los sitios existentes con versiones anteriores de los plugins / Jquery, intente esto

function close_window()
{
 $("#fancy_outer",window.parent.document).hide();
 $("#fancy_overlay",window.parent.document).hide();
 //window.top.window.$.fancybox.close(); this also does not work :(
}

se podría declarar y utilizar la función de close_window dentro del contenido de marco flotante.

Yo tenía el mismo problema y se dio cuenta de que no estoy utilizando el

type:'iframe'

Cuando se llama a la FancyBox, resolvió mi problema

HI, Cualquier persona que está teniendo problemas para cerrar una caja de lujo iFrame usando una instalación manual de Fancy Box en Wordpress 3.0:

Utilice este enlace en su iframe:

<a href="#" onClick="parent.jQuery.fancybox.close();" title="Close window">close fancybox</a>

Funciona:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top