通过 javascript 函数调用时 Fancybox iframe 不工作

Fancybox iframe not working when called via javascript function

我尝试在 fancybox 中调用 iframe,但它不起作用。

这是我写的:

        var paramsFancy={
            'transitionOut': 'elastic',
            'transitionIn': 'elastic',
            'speedOut': 300,
            'speedIn': 500,
            'autoScale': true,
            'centerOnScroll': true,
            'autoDimensions': true,
            'href' : '/index.php'
        };
        $.fancybox.open(paramsFancy);

我阅读了来自 Open fancybox from function 的人们的评论,但对我没有任何帮助。

有人可以帮忙吗?

这应该有效:

    var paramsFancy={
        'transitionOut': 'elastic',
        'transitionIn': 'elastic',
        'speedOut': 300,
        'speedIn': 500,
        'autoScale': true,
        'centerOnScroll': true,
        'autoDimensions': true,
        'href' : '#contentdiv',
        'type': 'iframe'
    };
    paramsFancy.href='/index.php';
    $.fancybox.open(paramsFancy);

如果您使用的是 fancybox v1.3.4(我的猜测,因为上面代码中的 API 选项)那么您需要这样做:

$.fancybox(paramsFancy);

... 因为 $.fancybox.open() 不是 v1.3.x 及以下版本的有效方法。它是为 v2.x 及更高版本引入的。

此外,如果您想打开 iframe,则需要将 type API 选项添加到您的设置中,例如:

var paramsFancy = {
    transitionOut: 'elastic',
    transitionIn: 'elastic',
    speedOut: 300,
    speedIn: 500,
    autoScale: true,
    centerOnScroll: true,
    autoDimensions: true,
    href : '/index.php',
    type: "iframe" // need this for external pages
};

$.fancybox(paramsFancy);

参见JSFIDDLE 使用 fancybox v1.3.4


另一方面,如果您真的在使用 fancybox v2.x,那么您需要更新 API 选项,例如:

var paramsFancy = {
    closeEffect: 'elastic', // transitionOut
    openEffect: 'elastic', // transitionIn
    closeSpeed: 300, // speedOut
    openSpeed: 500, // speedIn
    fitToView: true, // autoScale
    autoCenter: true, // centerOnScroll
    autoSize: true, // autoDimensions
    href: '/index.php',
    type: "iframe" // you still need this
};

注意我注释掉了v1.3.4的选项

那么你可以使用

$.fancybox(paramsFancy);

$.fancybox.open(paramsFancy);

...因为第一种方法是向后兼容的。

参见JSFIDDLE 使用 fancybox v2.1.5