1

这个特定的主题有一些关于 SO 的答案,但没有一个能解决我的问题。我不知道在哪里看这里,虽然我怀疑这是非常简单的事情。

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

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

4 回答 4

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"的是因为内容是外部页面。在任何情况下都应考虑同源策略。

于 2012-11-21T18:24:45.700 回答
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

于 2012-11-21T14:47:11.750 回答
1

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

这是每个浏览器版本的摘要

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

于 2012-11-21T14:34:46.877 回答
1

因为有类似的同源政策。

你从谷歌的回复中得到:X-Frame-Options SAMEORIGIN

如果您链接到您域中的子页面,它应该可以工作。

于 2012-11-21T14:41:12.800 回答