FancyBox iframe返回parent。$ as undefined(使用WordPress)

我试图从iframe中关闭FancyBox ,但是parent.$总是undefined 。 这是我的iframe JavaScript:

     jQuery(document).ready(function($){ (function($) { $.fn.closeFancyBox = function() { $(this).click(function() { parent.$.fancybox.close(); }); }; })(jQuery); $('#cancel').closeFancyBox(); }); });  

替换parent.$.fancybox.close(); alert('clicked'); 工作得很好。 当iframe在同一个域中时,我不明白为什么parent.$undefined的。

我正在使用WordPress 2.9.1和FancyBox for WordPress插件。

  • 主页: //server.local/web/test/index.php
  • iframe页面: //server.local/web/test/wp-content/plugins/wp-test/test.htm

这些url中的第一个是主页面,第二个是iframe页面; server.local是我的家庭测试服务器。

有任何想法吗? 如果它有用,我可以将整个源代码粘贴。

它是未定义的,因为WordPress在noConflict模式下运行jQuery。 改为使用它:

 parent.jQuery.fancybox.close(); 

noConflict模式意味着$不等于jQuery。 您必须明确使用jQuery来访问您通常可以使用$访问的内容。

我的答案与wordpress无关,但一般来说就是fancybox。

在iframe中,如果你已经包含了主jquery脚本(jquery-1.5.2.min.js),那么它将与主页面上的那个相冲突,而在这种情况下, 父。$ .fancybox将不起作用。

其他jquery相关的东西(例如:标签)将在iframe内部工作。 因此,新手程序员不会发生iframe中的第二个jquery脚本是恶棍。

parent.fancybox.close()的任何变体都不适用于我,必须是一些lib冲突。

这是我最新fancybox的工作解决方法,你应该使用css display属性而不是.hide()方法,因为在这种情况下fancybox不会再打开。

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

我不得不这样做:

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

之前有类型错误。

这对我有用;)

  

感谢这篇文章,它实际上引导了我一点……我感觉很糟糕,因为它花了我几分钟而且我知道Fancybox对于Wordpress来说是多么令人沮丧!

这些建议都不适合我。 我必须使用以下代码解决它。 最新版本可能支持parent.jQuery.fancybox.close(); 方法,但旧版本不适用。

对于使用旧版本插件/ Jquery的现有站点,请尝试此操作

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

您可以在Iframe内容中声明并使用函数close_window。

我有同样的问题,并注意到我没有使用

 type:'iframe' 

在调用fancybox时,它解决了我的问题

花了几个小时试图调试这个并没有得到任何结果。 所以我用最新版本的FancyBox切换了’FancyBox for WordPress’插件,并修复了它。 真的应该早点尝试过。

在花了一些时间使用WordPress及其各种插件后,我建议手动调用而不是依赖插件。 它只是增加了另一层复杂性,如果你知道你在做什么,就不需要在那里。

感谢Doug在WordPress中向iframe指向父窗口jQuery的相应语法。

HI,任何人在使用Wordpress 3.0手动安装Fancy Box时无法关闭Fancy Box iFrame:

在iframe中使用此链接:

 close fancybox 

有用 :)