पेज लोड पर jQuery के फैंसीबॉक्स कैसे लॉन्च करें?


95

मैं पेज लोड पर एक फैंसीबॉक्स (उदाहरण के लिए एक मॉडल या लाइट बॉक्स का फैंसीबॉक्स संस्करण) लॉन्च करना चाहूंगा । मैं इसे एक छिपे हुए एंकर टैग से बांध सकता हूं और जावास्क्रिप्ट के माध्यम से उस एंकर टैग के क्लिक इवेंट को आग लगा सकता हूं, लेकिन मैं केवल सीधे फैंसीबॉक्स लॉन्च करूंगा और अतिरिक्त एंकर टैग से बचूंगा।


यदि आप आधिकारिक फैंसीबॉक्स वेब साइट ( फैंसीबॉक्स.नेट ) पर जाते हैं, तो उनके पास एक स्वचालित पॉपअप है, इसलिए आप उनके पेज स्रोत की जांच कर सकते हैं कि उन्होंने यह कैसे किया (संकेत: स्वीकृत उत्तर के समान नहीं)
निप्स्यॉरस

15
दूसरों के लिए कुछ समय बचाने के लिए - $ (फ़ंक्शन () {$ .fancybox ('<div> मुझे बदलें </ div>', {गद्दी: 20});});
निकिब्रो

जवाबों:


162

फैंसीबॉक्स वर्तमान में स्वचालित रूप से लॉन्च करने के तरीके का सीधे समर्थन नहीं करता है। मेरे आस-पास जो काम करने में सक्षम था, वह एक छिपा हुआ एंकर टैग बना रहा है और इसे क्लिक इवेंट ट्रिगर कर रहा है। सुनिश्चित करें कि क्लिक ईवेंट को ट्रिगर करने के लिए आपका कॉल jQuery और Fancybox JS फ़ाइलों को शामिल करने के बाद शामिल किया गया है। मेरे द्वारा उपयोग किया गया कोड इस प्रकार है:

यह नमूना स्क्रिप्ट सीधे HTML में सन्निहित है, लेकिन इसे JS फ़ाइल में भी शामिल किया जा सकता है।

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

1
सिर्फ एक FYI द $ (दस्तावेज़)। पहले से ही (फ़ंक्शन () {$ ("# हिडन_लिंक")। फेनबॉक्स ()। ट्रिगर ('क्लिक');}); यह समान है: फ़ंक्शन LaunchFancyBox () {$ ("# हिडन_लिंक")। फेनबॉक्स (); ट्रिगर ('क्लिक'); } $ (दस्तावेज़)। पहले से ही (LaunchFancyBox ());
मार्क शुल्त्स

4
जैसा है वैसा ही $(document).ready(LaunchFancyBox());होना चाहिए $(document).ready(LaunchFancyBox);। (अंत में फ़ंक्शन कॉल की कमी पर ध्यान दें)।
एडम लूटर

मैंने यह कोशिश की, लेकिन सफलता के बिना। मुझे अजाक्स के माध्यम से सामग्री लोड करनी थी, तो मैं $ .fancybox ({... सामग्री पास कर रहा
हूं

@ बॉलर आपका समाधान $ ("# छिपा_लिंक")। फैंटेबॉक्स ()। ट्रिगर ('क्लिक'); मेरे लिए एकदम सही काम करता है।
मुकेश

66

मुझे इस फ़ंक्शन को तैयार दस्तावेज़ में कॉल करके काम करने के लिए मिला:

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

यह मेरे लिए काम नहीं किया क्योंकि href पैरामीटर को संभालने के साथ कुछ गलत हो जाता है। "प्रतीक्षा" एनीमेशन हमेशा के लिए दिखाता है।
बोरिस वान शूटेन

3
यह ध्यान देने योग्य है कि यह वह तरीका है जो फैंसीबॉक्स डेवलपर्स को खुद लगता है। यदि आप फैंसीबॉक्स वेब साइट ( फैंसीबॉक्स.नेट ) पर जाते हैं, तो आपको एक मॉडल डायलॉग देखना चाहिए जो आपको बताए कि "फैंसीबॉक्स 2 रिलीज़ हो गया है!" ... यदि आप उस पृष्ठ के स्रोत को देखते हैं तो आप देख सकते हैं कि उन्होंने इस उत्तर में वर्णित तकनीक का उपयोग किया है।
निपसीसोरस

यह स्वीकृत उत्तर होना चाहिए! स्वीकृत समाधान काम कर रहा है, लेकिन एक छिपे हुए एंकर को जोड़ना, जिस पर आप क्लिक इवेंट ट्रिगर करते हैं, वास्तव में सबसे साफ नहीं है, है ना?
luigi7up

सहमत, एक छिपे हुए लिंक का उपयोग करना एक हैक है। सही से करो।
जमसी

बहुत आसान! धन्यवाद! मेरे पास इसमें एक ऑटोप्ले youtube एम्बेड है। वीडियो खत्म होते ही डे लाइटबॉक्स को बंद करने का कोई तरीका है?
एंटोनियो अल्मीडा 23

12

यह आसान है:

अपने तत्व को पहले इस तरह छिपाएं:

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

फिर अपनी जावास्क्रिप्ट को कॉल करें:

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

नीचे दी गई छवि देखें:

यहां छवि विवरण दर्ज करें

एक और उदाहरण:

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

यहां छवि विवरण दर्ज करें


10

Window.load (डॉक्यूमेंट के विपरीत (पहले से ही)) फैंसीबॉक्स 2.0 के JSFiddler onload डेमो में उपयोग की जाने वाली ट्रिक प्रतीत होती है :

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

ध्यान रखें कि आप कहीं भी डॉक्यूमेंट (पहले से) का उपयोग कर रहे होंगे, और IE9 दोनों के लोड ऑर्डर से परेशान है। यह आपको दो विकल्पों के साथ छोड़ देता है: सब कुछ window.load में बदल दें या एक setTimer () का उपयोग करें।


यह उत्तर मेरे लिए बेहतर काम करता है जब मैं चाहता हूं कि एक पृष्ठ आयोस जैसी चेतावनी के साथ शुरू हो और फिर इसे बंद करने में सक्षम हो। सबसे लोकप्रिय जवाब जब मैंने इसे लागू करने की कोशिश की, तो मैंने इसे कभी भी फैंसीबॉक्स पर क्लिक किया। मान लीजिए कि तत्व दूर जाने के बजाय फिर से लोड हो जाएगा। धन्यवाद!
नाथनियल फ्लिक

आपका उत्तर सर सबसे अधिक प्रासंगिक है और 100% सही है। धन्यवाद।
श्लोक कीन

8

या अपने फैंसीबॉक्स सेट होने के बाद JS फ़ाइल में इसका उपयोग करें:

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

मेरा मानना ​​है कि फैंसीबॉक्स 1.2.1 मेरे परीक्षण से डिफ़ॉल्ट विकल्पों का उपयोग करेगा अन्यथा मुझे ऐसा करने की आवश्यकता थी।


5

यह अभी तक उत्तरों में से एक क्यों नहीं है? "

$("#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
    });
});

अब बस अपने लिंक को ट्रिगर !!

यह फैंसीबॉक्स होमपेज से मिला है


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>

यह विफल हो जाएगा क्योंकि विकल्पों के समापन कोष्ठक पर टिप्पणी की गई है।
टेकेन

Easy स्वच्छ और आसान! सही काम करता है। धन्यवाद!
कैरोलिना

4

मेरे मामले के लिए, निम्नलिखित सफलतापूर्वक काम कर सकता है। जब पृष्ठ लोड किया जाता है, तो लाइटबॉक्स तुरंत पॉप-अप होता है।

JQuery: 1.4.2

फैंसीबॉक्स: 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>

3

एलेक्स का जवाब बहुत अच्छा है। लेकिन यह ध्यान रखना महत्वपूर्ण है कि डिफ़ॉल्ट फैंसीबॉक्स शैली को कॉल करता है। यदि आपके पास अपने स्वयं के कस्टम नियम हैं, तो आपको बस कॉल करना चाहिए। उस विशिष्ट एंकर पर क्लिक करें

$(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');
});

2

मैं वास्तव में "लाइव" इवेंट का उपयोग करके केवल बाहरी JS फ़ाइल से एक फैंसीबॉक्स लिंक को ट्रिगर करने में कामयाब रहा:

सबसे पहले, अपने भविष्य के डायनामिक एंकर पर लाइव क्लिक इवेंट जोड़ें:

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

फिर, शरीर को लंगर संलग्न करें:

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

फिर एंकर को "क्लिक" करके फैंसीबॉक्स को ट्रिगर करें:

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

फैंसीबॉक्स लिंक अब "लगभग" तैयार है। क्यों "लगभग"? क्योंकि ऐसा लगता है कि दूसरे क्लिक को ट्रिगर करने से पहले आपको कुछ देरी जोड़ने की आवश्यकता है, अन्यथा स्क्रिप्ट तैयार नहीं है।

यह हमारे एंकर पर कुछ एनीमेशन का उपयोग करके एक त्वरित और गंदी देरी है लेकिन यह अच्छी तरह से काम करता है:

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

यहां आप जाते हैं, आपके फैंसीबॉक्स को ऑनलोड दिखाई देना चाहिए!

HTH


1

शायद यह मदद करेगा ... इसका उपयोग पूर्ण आकार के jQuery कैलेंडर क्लिक इवेंट ( http://arshaw.com/fullcalendar/ ) में किया गया था ... लेकिन इसका उपयोग आमतौर पर 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;
  }

1

आप setTimeout()डोम तैयार होने के बाद बॉक्स के प्रदर्शन में देरी के लिए देशी जावास्क्रिप्ट फ़ंक्शन का भी उपयोग कर सकते हैं ।

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

1

यदि आपके पास क्लिक करने के लिए बटन नहीं है तो। मेरा मतलब है कि अगर आप इसे अजाक्स प्रतिक्रिया पर खोलना चाहते हैं तो यह इस तरह होगा:

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

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

ये सहायता करेगा..


0

आप इस तरह से लिंक डाल सकते हैं (यह छिपा होगा। मई से पहले हो सकता है </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');
});

0

HTML:

<a id="hidden_link" href="LinkToImage"></a>

जे एस:

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

1
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन यह समस्या का हल कैसे और / या इसके बारे में अतिरिक्त संदर्भ प्रदान करता है, इससे उत्तर के दीर्घकालिक मूल्य में सुधार होगा।
1:35 पर निक 3500

-1

शायद आप jqmodal का उपयोग कर सकते हैं , यह हल्का और उपयोग करने में आसान है। आप कॉल करके मोडल बॉक्स दिखा सकते हैं

$('.box').jqmShow() 

मुझे नहीं लगता कि यह काम करता है क्योंकि वह फैंसीबॉक्स का वर्ग नहीं है
जोस बेसिलियो

1
मेरे डिज़ाइनर फैंसीबॉक्स का लुक और फील चाहते हैं, और मैं इसे jmmodal के लिए लागू करने के प्रयास के माध्यम से नहीं जाना पसंद करूंगा। इसके अलावा, हम पहले से ही साइट पर फैंसीबॉक्स का उपयोग कर रहे हैं और मैं दो अलग-अलग प्रकाश बॉक्स की कमी का समर्थन नहीं करना चाहता।
15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.