Frage

Ich möchte einen Fancybox starten (zB Fancybox der Version eines modalen oder Lichtbox) auf Seite Last . Ich konnte es zu einem versteckten Ankertag binden und das Click-Ereignis des Anker-Tag über JavaScript Feuer, aber ich würde lieber nur die Fancybox starten direkt und vermeiden die zusätzlichen Anker-Tag.

War es hilfreich?

Lösung

Fancybox derzeit nicht direkt einen Weg unterstützen, um automatisch zu starten. Die Arbeit um konnte ich zum Laufen bringen ist eine versteckte Ankertag Erstellen und das Auslösen es Ereignis klicken. Stellen Sie sicher, dass Ihr Anruf das Click-Ereignis auszulösen enthalten ist, nachdem die jQuery und Fancybox JS-Dateien enthalten sind. Der Code, den ich verwenden, ist wie folgt:

Dieses Beispielskript eingebettet ist direkt im HTML, aber es könnte auch in einer JS-Datei aufgenommen werden.

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

Andere Tipps

Ich habe dies durch den Aufruf dieser Funktion in dem Dokument zu arbeiten bereit:

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

Es ist einfach:

Machen Sie Ihre Element versteckt zuerst wie folgt aus:

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

Dann rufen Sie Ihre javascript:

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

Überprüfen Sie das Bild aus unter:

eingeben Bild Beschreibung hier

Ein weiteres Beispiel:

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

eingeben Bild Beschreibung hier

Window.load (im Gegensatz () document.ready) erscheint die den Trick in den onload Demos von Fancybox 2.0 JSFiddler verwendet werden :

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

Bare daran können Sie verwenden document.ready () an anderer Stelle, und IE9 wird mit der Ladereihenfolge der beiden verärgern. Dies läßt Dich mit zwei Optionen:. Alles ändern, um eine setTimer window.load oder zu benutzen ()

Nutzen Sie diese in der JS-Datei nach dem fancybox eingerichtet ist:

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

Ich glaube, Fancybox 1.2.1 Standardoptionen sonst von meinen Tests verwenden, wenn ich dies tun muß.

Warum ist das nicht eine der Antworten noch:

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

jetzt auch ausgelöst, nur Ihren Link !!

habe diese von der Fancybox Homepage

Der beste Weg, die ich gefunden habe ist:

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

Für meinen Fall kann die folgende erfolgreich arbeiten. Wenn die Seite geladen wird, die Leuchtkasten ist Pop-up sofort.

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>

Alex Antwort ist groß. Es ist aber importanting zu beachten, dass, der den Standard fancybox Stil nennt. Wenn Sie Ihre eigenen Regeln haben, sollten Sie einfach anrufen .trigger auf, dass bestimmte Anker auf

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

ich es tatsächlich geschafft, eine fancybox Link nur von einer externen JS-Datei auszulösen, die „live“ Ereignis mit:

Fügen Sie zunächst das Live-Click-Ereignis auf Ihrem zukünftigen dynamischen Anker:

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

Dann fügen Sie den Anker auf den Körper:

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

Dann die fancybox auslösen, indem Sie "Klicken" die Anker:

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

Der fancybox Link ist jetzt "fast" fertig. Warum „fast“? Weil es, wie Sie sieht eine gewisse Verzögerung, bevor Auslöser des zweiten Klick hinzufügen müssen, da sonst das Skript nicht bereit ist.

Es ist eine schnelle und schmutzige Verzögerung einer Animation auf unserem Anker verwenden, aber es funktioniert gut:

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

Hier gehen Sie, sollte Ihr fancybox erscheint onload!

HTH

Vielleicht wird dies helfen ... dies in der vollen Größe jQuery Kalender Click-Ereignis verwendet wurde ( http: // arshaw .com / fullcalendar / ) ... aber es kann ganz allgemein mit fancybox wurde ins Leben gerufen von jQuery.

zu behandeln verwendet werden
  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;
  }

Sie können auch die native JavaScript-Funktion verwenden setTimeout() verzögern, um die Anzeige der die Box nach dem DOM bereit ist.

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

Im Fall, wenn Sie Taste nicht haben zu klicken. Ich meine, wenn Sie es auf Ajax-Antwort öffnen wollen, dann wäre es so aussehen:

$.fancybox({
      href: '#ID',
      padding   : 23,
      maxWidth  : 690,
      maxHeight : 345
});
$(document).ready(function() {
    $.fancybox(
      '<p>Yes. It works <p>',
       {
        'autoDimensions'    : false,
        'width'             : 400,
        'height'            : 200,
        'transitionIn'      : 'none',
        'transitionOut'     : 'none'
       }
    );
});

Dies wird helfen ..

vielleicht können Sie benutzen jqmodal , es ist leicht und einfach zu bedienen. Sie können durch den Aufruf

das modale Feld zeigen
$('.box').jqmShow() 

Sie können so sagen Link (es wird ausgeblendet. Vor </body> sein kann)

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

Und Arbeits rel-Attribut oder Klasse wie folgt

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

Just do it mit jquery Triggerfunktion

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

HTML:

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

JS:

<script type="text/javascript">
    $(document).ready(function() {
        $("#hidden_link").fancybox().trigger('click');
    });
</script>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top