Fancybox:无法加载请求的内容。请稍后再试

时间:2012-11-21 14:22:13

标签: javascript jquery fancybox

这个特定主题在SO上有一些答案,但没有一个能解决我的问题。我不知道在哪里看,虽然我怀疑它很简单。

  • 当我尝试在Fancybox中打开网址手动(即通过“物理”点击链接)时,它可以正常工作。
  • 但是,如果我尝试在页面加载自动(即通过伪造点击链接)打开它,它根本不起作用并且给我在标题中提到的错误。

HTML很简单:

<a href="http://www.mydomain.nl/url/to/whatever" class="fancybox hidden_link">test</a>

我用来自动点击它的Javascript也非常简单:

$(document).ready(function() {              
    $(".hidden_link").fancybox().trigger("click");
});

事件发生(Fancybox打开),但它只显示“无法加载的内容”消息。 当我手动点击链接时,我在Fancybox中看到了自己的页面。

我在这里缺少什么?

4 个答案:

答案 0 :(得分:4)

有这个链接:

<a href="http://www.mydomain.nl/url/to/whatever" class="fancybox hidden_link">test</a>

...这个脚本:

$(document).ready(function() {
    $(".fancybox").fancybox({
        type: "iframe",
        width : 380, // or whatever
        height: 280
    }).trigger("click");
});​

......应该手动和以编程方式完成这两项工作。

参见 JSFIDDLE

注意我使用了type: "iframe",因为内容是外部页面。在任何情况下都应考虑same origin policy

答案 1 :(得分:1)

这是同源政策的一个方面。确切的行为因浏览器而异。见http://code.google.com/p/browsersec/wiki/Part2#Navigation_and_content_inclusion_across_domains

这是summary per browser version

这里显然存在安全问题,因为点击带有JavaScript的链接可能会导致您的行为。这可能对GET请求导致状态更改的站点具有破坏性,因为验证您的标头(如cookie)也将与该GET请求一起发送。

答案 2 :(得分:1)

因为有相同的原始政策。

您来自谷歌回复:X-Frame-Options SAMEORIGIN

如果您链接到域中的子页面,它应该有效。

答案 3 :(得分:1)

这是我给作者一段时间的解决方案。

$(document).ready(function() {
    $.fancybox({
        content: $("#popup"),
        closeClick  : false,
        openEffect  : 'none',
        closeEffect : 'none',
        helpers   : {
            overlay : {
                closeClick: false,
            }
        }
    });
});

链接:http://jsfiddle.net/YkH5G/1/

通过作者插件:https://github.com/fancyapps/fancyBox/issues/410