Question

Je suis en train de fermer FancyBox à partir du iframe, mais parent.$ est toujours undefined. Ceci est mon 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>

Remplacement parent.$.fancybox.close(); avec alert('clicked'); fonctionne très bien. Je ne comprends pas pourquoi parent.$ est undefined lorsque l'iframe est dans le même domaine.

J'utilise WordPress 2.9.1, avec le FancyBox pour le plugin Wordpress.

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

Le premier de ces URL est la page principale, la seconde est la page iframe; server.local est mon serveur de test à domicile.

Toutes les idées? Je peux Pastebin la source entière si elle serait utile.

Était-ce utile?

La solution 8

a passé pas quelques heures à essayer de déboguer cela et obtenu nulle part. Alors je suis passé le 'FancyBox pour WordPress plugin avec la dernière version de FancyBox, et il a été fixé. Vraiment aurait essayé plus tôt.

Après avoir passé quelque temps avec WordPress et ses différents plugins, je vous recommande d'appeler les choses manuellement plutôt compter sur les plugins. Il ajoute juste une autre couche de complexité qui, si vous savez ce que vous faites, n'a pas besoin d'être là.

Merci à Doug pour souligner la syntaxe appropriée pour iframe à la fenêtre parent jQuery dans WordPress.

Autres conseils

Il est indéfini parce que WordPress fonctionne jQuery dans noConflict le mode . Utilisez ceci:

parent.jQuery.fancybox.close();

mode noConflict signifie $ ne correspond pas à jQuery. Vous devez utiliser explicitement jQuery pour accéder à ce que vous pouvez normalement accéder à $.

Ma réponse est non liée à wordpress, mais pour fancybox en général.

dans le iframe, si vous avez inclus le script principal jquery (jquery-1.5.2.min.js), alors il sera en conflit avec celui sur la page principale, et parents. $. Fancybox ne fonctionnera pas dans ce cas.

d'autres choses liées jquery (comme par exemple: les onglets) vont travailler à l'intérieur de l'iframe. par conséquent, il se produit coutume d'un programmeur novice que le deuxième script jquery intérieur de l'iframe est le méchant.

Les variations de parent.fancybox.close () ne fonctionne pas pour moi, doit être un conflit lib.

Voici ma solution de travail pour le dernier fancybox, vous devez utiliser la méthode d'affichage à la place la propriété css de la .hide () comme dans ce cas fancybox ne s'ouvre à nouveau.

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

Je devais faire ceci:

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

Got erreur de type avant.

Cela fonctionne pour moi;)

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

Merci pour ce post, il me fait un peu guidé ... Je me sens mal parce qu'il m'a fallu seulement quelques minutes et je sais combien frustrant Fancybox pour Wordpress est !!

Aucune des suggestions de travail pour moi. Je devais travailler autour d'elle en utilisant le code suivant. La dernière version peut soutenir la parent.jQuery.fancybox.close (); approche, mais les anciennes versions ne fonctionnent pas avec cela.

Pour les sites existants avec les anciennes versions des plugins / Jquery, essayez ceci

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

vous pouvez déclarer et utiliser la fonction close_window dans le contenu Iframe.

J'ai eu le même problème et a remarqué que je ne suis pas en utilisant le

type:'iframe'

Lorsque vous appelez le fancybox, il a résolu mon problème

HI, Toute personne qui a de la difficulté de fermer une boîte iFrame Fancy en utilisant une installation manuelle de Fancy Box dans Wordpress 3.0:

Utilisez ce lien dans votre iframe:

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

Il fonctionne:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top