Как запустить jQuery Fancybox при загрузке страницы?

Я хотел бы запустить Fancybox (например, версия Fancybox для модального или светлого окна) при загрузке страницы. Я мог бы привязать его к скрытому тегу привязки и запустить событие click этого тега привязки с помощью JavaScript, но я предпочел бы просто запустить Fancybox напрямую и избежать лишнего тега привязки.

Ответ 1

В настоящее время Fancybox напрямую не поддерживает способ автоматического запуска. Работа, над которой я мог работать, - создать скрытый тег привязки и вызвать событие click. Убедитесь, что ваш вызов для запуска события клика включен после включения jQuery и файлов Fancybox JS. Используемый мной код выглядит следующим образом:

Этот образец script встроен непосредственно в HTML, но он также может быть включен в файл JS.

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

Ответ 2

Я получил это для работы, вызвав эту функцию в готовом документе:

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

Ответ 3

Прост:

Сделайте свой элемент скрытым сначала следующим образом:

<div id="hidden" style="display:none;">
    Hi this is hidden
</div>

Затем назовите свой javascript:

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

Посмотрите изображение ниже:

enter image description here

Другой пример:

<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>

enter image description here

Ответ 4

Window.load(в отличие от document.ready()) представляется трюком, используемым в JSFiddler для загрузки демонстраций Fancybox 2.0:

$(window).load(function()
{
    $.fancybox("test");
});

Не забывайте, что вы можете использовать document.ready() в другом месте, а IE9 расстраивается с порядком загрузки этих двух. Это дает вам два варианта: изменить все на window.load или использовать setTimer().

Ответ 5

Или используйте это в JS файле после настройки fancybox:

$('#link_id').trigger('click');

Я считаю, что 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
    });
});

теперь просто запускайте ссылку!

получил это от сайта Fancybox

Ответ 7

Лучший способ, который я нашел, это:

<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>

Ответ 8

В моем случае можно успешно работать. Когда страница загружается, лайтбокс открывается сразу.

JQuery: 1.4.2

Fancybox: 1.3.1

<body onload="$('#aLink').trigger('click');">
<a id="aLink" href="http://www.google.com" >Link</a></body>

<script type="text/javascript">
    $(document).ready(function() {

        $("#aLink").fancybox({
            'width'             : '75%',
            'height'            : '75%',
            'autoScale'         : false,
            'transitionIn'      : 'none',
            'transitionOut'     : 'none',
            'type'              : 'iframe'
        });
    });
</script>

Ответ 9

Алекс ответ велик. но важно отметить, что это вызывает стиль fancybox по умолчанию. Если у вас есть свои собственные правила, вы должны просто вызвать .trigger щелкнуть на этом конкретном якоре

$(document).ready(function() {
$("#hidden_link").fancybox({ 
    'padding':          0,
    'cyclic':       true,
    'width':        625,
    'height':       350,
    'padding':      0, 
    'margin':      0, 
    'speedIn':      300,
    'speedOut':     300,
    'transitionIn': 'elastic',
    'transitionOut': 'elastic',
    'easingIn':     'swing',
    'easingOut':    'swing',
    'titleShow' : false
}); 
    $("#hidden_link").trigger('click');
});

Ответ 10

Мне действительно удалось вызвать ссылку fancyBox только из внешнего JS файла, используя "живое" событие:

Сначала добавьте событие прямого клика на ваш будущий динамический якорь:

$('a.pub').live('click', function() {
  $(this).fancybox(... fancybox parameters ...);
})

Затем добавьте якорь в тело:

$('body').append('<a class="iframe pub" href="your-url.html"></a>');

Затем запускаем fancyBox, "нажимая" якорь:

$('a.pub').click();

Ссылка fancyBox теперь "почти" готова. Почему "почти"? Поскольку, похоже, вам нужно добавить задержку перед запуском второго щелчка, иначе script не готов.

Это быстрая и грязная задержка, использующая некоторую анимацию на нашем якоре, но она хорошо работает:

$('a.pub').slideDown('fast', function() {
  $('a.pub').click();
});

Здесь вы идете, ваш fancyBox должен появиться onload!

НТН

Ответ 11

Возможно, это поможет... это было использовано в событии кликов по событию полного размера jQuery (http://arshaw.com/fullcalendar/)... но его можно использовать в более общем плане для работы с fancybox, запущенным jQuery.

  eventClick: function(calEvent, jsEvent, view) {
      jQuery("body").after('<a id="link_'+calEvent.url+'" style="display: hidden;" href="http://thisweekinblackness.com/wp-content/uploads/2009/01/steve-urkel.jpg">Steve</a>');
      jQuery('#link_'+calEvent.url).fancybox(); 
      jQuery('#link_'+calEvent.url).click();
      jQuery('#link_'+calEvent.url).remove();
    return false;
  }

Ответ 12

Вы также можете использовать встроенную функцию JavaScript setTimeout(), чтобы задержать отображение окна после готовности DOM.

<a id="reference-first" href="#reference-first-message">Test the Popup</a>

<div style="display: none;">
    <div id="reference-first-message" style="width:400px;height:100px;overflow:auto;">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis mi eu elit tempor facilisis id et neque. Nulla sit amet sem sapien. Vestibulum imperdiet porta ante ac ornare. Nulla et lorem eu nibh adipiscing ultricies nec at lacus. Cras laoreet ultricies sem, at blandit mi eleifend aliquam. Nunc enim ipsum, vehicula non pretium varius, cursus ac tortor. Vivamus fringilla congue laoreet. Quisque ultrices sodales orci, quis rhoncus justo auctor in. Phasellus dui eros, bibendum eu feugiat ornare, faucibus eu mi. Nunc aliquet tempus sem, id aliquam diam varius ac. Maecenas nisl nunc, molestie vitae eleifend vel, iaculis sed magna. Aenean tempus lacus vitae orci posuere porttitor eget non felis. Donec lectus elit, aliquam nec eleifend sit amet, vestibulum sed nunc.
    </div>
</div>

<script type="text/javascript">
    $(document).ready(function() {
        $("#reference-first").fancybox({
            'titlePosition'         : 'inside',
            'transitionIn'          : 'fade',
            'transitionOut'         : 'fade',
            'overlayColor'          : '#333',
            'overlayOpacity'        : 0.9
        }).trigger("click");

        //launch on load after 5 second delay
        window.setTimeout('$("#reference-first")', 5000);
    });
</script>

Ответ 13

Если у вас нет кнопки для клика. Я имею в виду, если вы хотите открыть его на ajax-ответе, тогда он будет выглядеть следующим образом:

$.fancybox({
      href: '#ID',
      padding   : 23,
      maxWidth  : 690,
      maxHeight : 345
});

Ответ 14

$(document).ready(function() {
    $.fancybox(
      '<p>Yes. It works <p>',
       {
        'autoDimensions'    : false,
        'width'             : 400,
        'height'            : 200,
        'transitionIn'      : 'none',
        'transitionOut'     : 'none'
       }
    );
});

Это поможет..

Ответ 15

возможно, вы можете использовать jqmodal, легкий и простой в использовании. вы можете показать модальный прямоугольник, позвонив

$('.box').jqmShow() 

Ответ 16

Вы можете поместить ссылку как это (она будет скрыта. Может быть до </body>)

<a id="clickbanner" href="image.jpg" rel="gallery"></a>

И работающий атрибут rel или класс, подобный этому

$(document).ready(function() {
    $("a[rel=gallery]").fancybox({
        openEffect  : 'elastic',
        closeEffect : 'elastic',
        maxWidth    : 800,
        maxHeight   : 600
    });
});

Просто сделайте это с помощью функции запуска jquery

$( window ).load(function() {
  $("#clickbanner").trigger('click');
});