Domanda

Sto cercando di chiudere Fancybox dall'interno l'iframe, ma parent.$ è sempre undefined. Questo è il mio 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>

La sostituzione parent.$.fancybox.close(); con alert('clicked'); funziona bene. Non capisco il motivo per cui è parent.$ undefined quando l'iframe è nello stesso dominio.

sto usando WordPress 2.9.1, con il Fancybox per Wordpress plugin.

  • Pagina principale: //server.local/web/test/index.php
  • Pagina iframe: //server.local/web/test/wp-content/plugins/wp-test/test.htm

Il primo di questi è URL della pagina principale, il secondo è la pagina iframe; server.local è il mio server di prova a casa.

Tutte le idee? Posso pastebin l'intera sorgente se sarebbe utile.

È stato utile?

Soluzione 8

Abbiamo trascorso un bel paio di ore cercando di eseguire il debug di questo e ottenuto da nessuna parte. Così ho acceso il 'Fancybox per WordPress' plugin con l'ultima versione di Fancybox, ed è stato risolto. In realtà dovrebbe hanno provato che in precedenza.

Dopo aver trascorso qualche tempo con WordPress e le sue varie plugin, mi consiglia di chiamare le cose manualmente piuttosto affidarsi a dei plugin. E 'appena aggiunge un ulteriore livello di complessità che, se si sa cosa si sta facendo, non ha bisogno di essere lì.

Grazie a Doug per aver ricordato la sintassi appropriata per iframe alla finestra padre jQuery in WordPress.

Altri suggerimenti

Si è indefinito perché WordPress funziona jQuery in noConflict modalità. Utilizzare questo, invece:

parent.jQuery.fancybox.close();

Modalità noConflict significa $ non è uguale jQuery. È necessario utilizzare in modo esplicito jQuery per accedere quello che normalmente si può accedere con $.

La mia risposta non è legato al wordpress, ma uno per fancybox in generale.

nel iframe, se è stato inserito lo script jquery principale (jquery-1.5.2.min.js), allora sarà in conflitto con quello sulla pagina principale, e genitore. $. Fancybox non funziona in questo caso.

altre cose legate jquery (come ad esempio: le schede) lavoreranno all'interno del iframe. di conseguenza, si verificano abituato a un programmatore alle prime armi che il secondo script jquery dentro l'iframe è il cattivo.

Le eventuali variazioni di parent.fancybox.close () non ha funzionato per me, deve essere qualche conflitto lib.

Ecco la mia soluzione di lavoro per l'ultimo fancybox, si dovrebbe utilizzare la proprietà CSS display al posto del metodo .nascosto (), come in quel caso fancybox non si apre di nuovo.

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

Ho dovuto fare questo:

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

Si è errore di tipo prima.

Questo funziona per me;)

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

Grazie per questo post, in realtà mi ha guidato un po '... Mi sento male perché mi ci sono voluti solo pochi minuti e so come frustrante Fancybox per Wordpress è !!

Nessuno dei suggerimenti lavorato per me. Ho dovuto lavorare intorno ad esso utilizzando il seguente codice. L'ultima versione può essere a sostegno della parent.jQuery.fancybox.close (); approccio, ma le versioni più vecchie non funzionano con questo.

Per i siti esistenti con le versioni precedenti dei plugins / Jquery, provate questo

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 :(
}

è possibile dichiarare e utilizzare la funzione close_window all'interno del contenuto Iframe.

Ho avuto lo stesso problema e ho notato che non sto usando il

type:'iframe'

Quando si chiama il fancybox, ha risolto il mio problema

HI, Chi sta avendo difficoltà a chiusura di un Fancy Box iFrame utilizzando un manuale di installazione di Fancy Box in Wordpress 3.0:

Utilizza questo link nella tua iframe:

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

Funziona:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top