9

我正在尝试从 iframe中关闭FancyBoxparent.$ ,但始终是undefined. 这是我的 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>

换成作品就好了parent.$.fancybox.close();alert('clicked');我不明白为什么parent.$iframeundefined在同一个域中。

我正在使用带有 FancyBox for Wordpress 插件的 WordPress 2.9.1。

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

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

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

4

9 回答 9

7

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

parent.jQuery.fancybox.close();

noConflictmode 表示$不等于 jQuery。您必须明确地使用jQuery来访问您通常可以访问的内容$

于 2010-02-09T07:06:21.707 回答
5

我的回答与 wordpress 无关,但一般来说与fancybox 有关。

在 iframe 中,如果您包含了主 jquery 脚本(jquery-1.5.2.min.js),那么它将与主页上的脚本冲突,并且 在这种情况下parent.$.fancybox将不起作用。

其他与 jquery 相关的东西(例如:选项卡)将在 iframe 内工作。因此,新手程序员不会想到 iframe 中的第二个 jquery 脚本是恶棍。

于 2011-09-02T00:56:19.157 回答
3

parent.fancybox.close() 的任何变体都对我不起作用,一定是一些库冲突。

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

parent.jQuery('#fancybox-overlay').css('display', 'none');
parent.jQuery('#fancybox-wrap').css('display', 'none');
于 2011-05-15T23:32:06.517 回答
3

我不得不这样做:

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

之前有类型错误。

于 2011-05-09T21:59:49.733 回答
1

这对我有用;)

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

感谢这篇文章,它实际上指导了我一点......我感觉很糟糕,因为我只花了几分钟,我知道 Wordpress 的 Fancybox 是多么令人沮丧!

于 2010-07-13T04:21:13.297 回答
1

没有任何建议对我有用。我不得不使用以下代码解决它。最新版本可能支持 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。

于 2010-08-10T06:54:49.090 回答
1

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

type:'iframe'

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

于 2012-01-20T07:53:08.943 回答
0

嗨,任何在 Wordpress 3.0 中使用手动安装 Fancy Box 来关闭 Fancy Box iFrame 时遇到问题的人:

在您的 iframe 中使用此链接:

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

有用 :)

于 2010-07-16T11:28:33.240 回答
0

花了好几个小时试图调试它,但一无所获。所以我用最新版本的 FancyBox 换掉了“FancyBox for WordPress”插件,它被修复了。真的应该早点尝试。

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

感谢 Doug 指出 WordPress 中 iframe 到父窗口 jQ​​uery 的适当语法。

于 2010-02-13T04:55:55.247 回答