如何在页面加载时启动jQuery Fancybox?

Ble*_*ger 95 jquery jquery-plugins fancybox

我想在页面加载时启动Fancybox(例如Fancybox的模态或灯箱版本).我可以将它绑定到一个隐藏的锚标签并通过JavaScript激活该锚标签的click事件,但我宁愿直接启动Fancybox并避免额外的锚标记.

Ble*_*ger 161

Fancybox目前不直接支持自动启动的方式.我能够工作的工作是创建一个隐藏的锚标签并触发它的点击事件.确保在包含jQuery和Fancybox JS文件之后包含触发click事件的调用.我使用的代码如下:

此示例脚本直接嵌入HTML中,但也可以包含在JS文件中.

<script type="text/javascript">
    $(document).ready(function() {
        $("#hidden_link").fancybox().trigger('click');
    });
</script>
Run Code Online (Sandbox Code Playgroud)

  • 与`$(document).ready(LaunchFancyBox());`应该是`$(document).ready(LaunchFancyBox);`.(注意最后没有函数调用). (4认同)

Jor*_*anC 66

我通过在文档准备中调用此函数来实现此功能:

$(document).ready(function () {
        $.fancybox({
            'width': '40%',
            'height': '40%',
            'autoScale': true,
            'transitionIn': 'fade',
            'transitionOut': 'fade',
            'type': 'iframe',
            'href': 'http://www.example.com'
        });
});
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,这似乎是fancybox自己开发的方法.如果您前往fancybox网站(http://fancybox.net),您应该会看到一个模态对话框,告诉您"fancybox2已发布!" ...如果您查看该页面的来源,您可以看到他们已经使用了本答案中描述的技术. (3认同)

His*_*eer 11

这很简单:

首先隐藏元素,如下所示:

<div id="hidden" style="display:none;">
    Hi this is hidden
</div>
Run Code Online (Sandbox Code Playgroud)

然后调用你的javascript:

<script type="text/javascript">
    $(document).ready(function() {
        $.fancybox("#hidden");
    });
</script>
Run Code Online (Sandbox Code Playgroud)

看看下面的图片:

在此输入图像描述

另一个例子:

<div id="example2" style="display:none;">
        <img src="http://theinstitute.ieee.org/img/07tiProductsandServicesiStockphoto-1311258460873.jpg" />
    </div>

 <script type="text/javascript">
        $(document).ready(function() {
            $.fancybox("#example2");
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Chr*_*s S 10

Window.load(与document.ready()相对)似乎是Fancybox 2.0JSFiddler onload演示中使用的技巧:

$(window).load(function()
{
    $.fancybox("test");
});
Run Code Online (Sandbox Code Playgroud)

请记住,你可能在其他地方使用document.ready(),IE9对两者的加载顺序感到不安.这为您提供了两个选项:将所有内容更改为window.load或使用setTimer().


小智 8

或者在设置fancybox后在JS文件中使用它:

$('#link_id').trigger('click');
Run Code Online (Sandbox Code Playgroud)

我相信Fancybox 1.2.1将使用默认选项,否则我需要执行此操作时的测试.


小智 6

为什么不是这个答案呢?:

$("#manual2").click(function() {
    $.fancybox([
        'http://farm5.static.flickr.com/4044/4286199901_33844563eb.jpg',
        'http://farm3.static.flickr.com/2687/4220681515_cc4f42d6b9.jpg',
        {
            'href'  : 'http://farm5.static.flickr.com/4005/4213562882_851e92f326.jpg',
            'title' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit'
        }
    ], {
        'padding'           : 0,
        'transitionIn'      : 'none',
        'transitionOut'     : 'none',
        'type'              : 'image',
        'changeFade'        : 0
    });
});
Run Code Online (Sandbox Code Playgroud)

现在只需触发你的链接!!

Fancybox主页获得此信息


are*_*-ru 5

我发现的最好方法是:

<script type="text/javascript">
    $(document).ready(function() {
        $.fancybox(
             $("#WRAPPER_FOR_hidden_div_with_content_to_show").html(), //fancybox works perfect with hidden divs
             {
                  //fancybox options
             }
        );
    });
</script>
Run Code Online (Sandbox Code Playgroud)