【问题标题】:Fancybox 2 in iframe of facebook page with a page loadfacebook页面iframe中的Fancybox 2,页面加载
【发布时间】:2013-04-12 20:38:54
【问题描述】:

我正在尝试使用fancybox 2 在facebook 页面中创建应用程序,其中页面作为iframe 加载到fancybox 中。它工作得很好,除了在 IE 中(谁会知道!)。

在我的 fancybox 2 中,有一个按钮可以提交表单并将您发送到另一个页面。此页面与上一页加载在同一个花式框窗口中。这个页面加载的时候,fancybox的高度没有调整好,所以我的页面有一半是不可见的。

我现在要做的是更改fancybox iframe 的高度,但我已经坚持获取iframe 的实际大小。

这是我在fancybox iframe中加载的最后一页中的javascript代码:

$(document).ready(function() {
    var inner = $('.fancybox-inner');
    console.log(inner);
});

这个console.log 返回'null',告诉我这个类在页面中不存在。 我还尝试了以下方法:

parent.$('.fancybox-inner');
parent.$('.fancybox-iframe');
$('.fancybox-iframe');
$.fancybox;
parent.fancybox;

我的幻想箱加载:

$(document).ready(function() {
$(".uploadbox").fancybox({
    scrolling : 'no',
    preload   : true,
    type      : 'iframe',
    width     : '623px',
    height    : 'auto',
    autoSize  : true,
    afterLoad : function () { $.fancybox.update(); }, //this does not work
    closeBtn  : false,
        closeClick  : false,
        helpers     : { 
            overlay : {closeClick: false}
        }
    });
});

任何帮助将不胜感激!

【问题讨论】:

    标签: php jquery facebook iframe fancybox-2


    【解决方案1】:

    我从来没有设法解决这个问题。我会向你解释原因:

    Facebook 页面使用 iframe 将您的网站显示到他们的网站中。要在 fancybox 2 中显示另一个页面,您也需要使用 iframe。因为 iframe 中的 iframe 总是会出现问题(跨浏览器等),所以由于双 iframe,无法为父窗口提供我的幻想框的高度。由于应用程序必须上线,我决定给它一个静态高度。以后我不会再使用 Fancybox 2 或其他任何东西,这只是 Facebook 内部的一大不幸。

    【讨论】:

      【解决方案2】:

      你需要 parent.jQuery.fancybox.resize();甚至 window.parent.jQuery.fancybox.resize();

      如果我没记错的话,他们的网站上有一个关于这个问题的规范。

      【讨论】:

      • 如果我在任何浏览器的控制台中执行此操作,它会给我“TypeError: Cannot read property 'fancybox' of undefined”。这基本上是我的问题
      • 当你在fancybox中打开一个iframe时,一定要为iframe打开控制台而不是从父页面打开。然后,从该控制台尝试:window.parent.jQuery - 它应该给你 jquery 对象,接下来,尝试 window.parent.jQuery.fancybox 应该给你fancybox 对象。
      • .resize();是第一个版本的 fancybox 的一个选项,因此不起作用。 。更新();是进入 v2 的方式,尽管这也不起作用:(
      • 这是 window.parent.jQuery.fancybox 返回的内容:'function (){b.open.apply(this,arguments)}'。我不认为这是应该的。
      • 这正是它所需要的 :) 使用你的 iframed 内容宽度/高度来调用父窗口fancybox,这反过来将手动修改它的宽度/高度(在fancy-outer 上设置宽度/高度,或者不管叫什么名字)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多