turtleshark: lightbox automatisch starten

Hallo leute,

ich möchte, dass beim start der "index.html" automatisch ein begrüßungsbild über der seite erscheint.

dazu habe ich die lightbox (2) in eine seite eingebaut. das funktioniert über den befehl:

<a href="img/x-mas.jpg" rel="lightbox" title="Frohes Fest">Frohes Fest</a>

alles blendend, solange man die lightbox dadurch manuell aufruft.

Wie muß ich die befehlszeile nun umschreiben, dass dieses <a href...> automatisch startet?

wenn ich statt dessen <body onload...> einsetze, erscheint eine fehlermeldung, "x-mas" sei undefiniert.

wie definiere ich denn dann das bild, dass in der lightbox erscheinen soll? oder gehr das ganze auch anders? ich bin echt am verzweifeln. warscheinlich bin ich zu blöde dazu...

vielen dank für eure hilfe,

greez turtleshark

  1. Hallo turtleshark,

    wenn ich es auf die Schnelle richtig sehe, ist die Funkion start() für das anzeigen der Bilder zuständig. Diese erwartet einen Parameter und zwar den Link (also Objekt).

    Du könntest demnach versuchen, dieses Link-Objekt zu bilden und in die init-Funktion zu schreiben:

      
    function initLightbox() {  
      myLightbox = new lightbox();  
      myLightbox.start( imageLink ); // hier das Anker-Objekt  
    } 
    

    Mit freundlichem Gruß
    Micha

    1. hey mich,

      erstmal vielen dank für deine schnelle antwort.

      warsch. bin ich  - wie oben beschrieben - tatächlich zu blöde. wenn ich deinen tipp umsetze:

      <script language="JavaScript">

      function initLightbox() {
        myLightbox = new lightbox();
        myLightbox.start(img/x-mas.jpg); // hier das Anker-Objekt
      }

      </script>

      im <head> und dann in den <body>

      <body onload="myLightbox()">

      setze, kommt die fehlermeldung "objekt erwartet".

      habe ich in der funktion den ort des bildes falsch angegeben, oder wo liegt hier der fehler?

      greez turtle

      1. Ein leicht verzögerter Startlöst könnte dein Problem lösen

        window.setTimeout("weihnacht()",100)
        function weihnacht(){
        und jetzt Dein script

        Sigge

        1. Hallo sigge,

          nun wird zwar kein objekt mehr erwaret, aber die lightbox startet immer noch nicht. die seite wird ganz normal geladen.

          eine erhöhung des zeitlimits bringt leider auch nichts....

          hier mal der ausschnitt des codes, vielleicht liegt der fehler ja woanders und ich sehe ihn nicht:

          </script>

          <script type="text/javascript" src="js/prototype.js"></script>
          <script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>
          <script type="text/javascript" src="js/lightbox.js"></script>

          <body onselectstart="return false" ondragstart="return false"
          oncontextmenu="return false" oncontext="return false">

          <script language="JavaScript">
          window.setTimeout("weihnacht()",300)
          function weihnacht(){

          function initLightbox() {
            myLightbox = new lightbox();
            myLightbox.start(img/x-mas.jpg); // hier das Anker-Objekt
          }
          }
          </script>

          </head>

          <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />

          <body onload="weihnacht()">

          .
          .
          .
          </body>

          1. hi turtleshark,

            hier mal der ausschnitt des codes, vielleicht liegt der fehler ja woanders und ich sehe ihn nicht:

            […]

            <body onselectstart="return false" ondragstart="return false"
            oncontextmenu="return false" oncontext="return false">

            ^ Das würde ich rausnehmen. Beeinträchtigt den normal gewöhnten Komfort der Benutzer stark. Ich besuche solche Seiten nur, wenn mich dafür wirklich relevanter Content erwartet.

            <script language="JavaScript">
            window.setTimeout("weihnacht()",300)
            function weihnacht(){

            function initLightbox() {
              myLightbox = new lightbox();
              myLightbox.start(img/x-mas.jpg); // hier das Anker-Objekt

            ^^^^^^^^^^^^^
            wie wäre es damit, den String in Anführungszeichen zu setzen? ;-)

            }
            }

            </script>

            Schöne Grüße,
            Willi

            1. Hallo Willi,

              myLightbox.start(img/x-mas.jpg); // hier das Anker-Objekt
                                    ^^^^^^^^^^^^^
              wie wäre es damit, den String in Anführungszeichen zu setzen? ;-)

              Ich denke nicht, das dies hilft. Wie ich schon schrieb, erwartet die Funktion ein/das (JavaScript-) Objekt eines Ankers und nicht nur die Quelle.

              Du müsstest zB über document.anchors den entsprechenden Link suchen und übergeben.

              Mit freundlichem Gruß
              Micha

              1. Hallo,

                also ich habe es wie du beschrieben hast getan, Micha. die befehzlzeile lautet jetzt:

                <body onLoad="document.location.href='img/x-mas.jpg'" rel="lightbox">

                nun startet tatsächlich das bild - und nur das bild - aber nicht die lightbox.

                um nochmal meinen wunsch zu erklären:

                wenn die startseite geladen wurde, soll sich die lightbox mit einem speziellen bild öffnen. (sozusagen - obwohl ich es nicht so nennen möchte - als "popup")

                die lightbox über einen link aufzurufen funktioniert mit folgender zeile wunderbar:

                <a href="img/x-mas.jpg" rel="lightbox" title="">image #1</a>

                also irgdendwas stimmt noch nicht an der sache...

                gruß turtleshark

                1. Hallo turtleshark,

                  die befehzlzeile lautet jetzt:
                  <body onLoad="document.location.href='img/x-mas.jpg'" rel="lightbox">

                  Wo habe ich dies so beschrieben? Du sollst ein Link-Objekt erzeugen oder im Dokument vorgeben und an die Start-Methode übergeben. Das hat nichts mit dem zu tun, was Du hier darstellst.

                  nun startet tatsächlich das bild - und nur das bild - aber nicht die lightbox.

                  Das ist auch korrekt. Mit location.href legst Du die Seite fest, die geladen werden soll, nachdem die Elternseite fertig geladen ist. Dies hat jedoch nichts mit Deinem Problem zu tun.

                  um nochmal meinen wunsch zu erklären:

                  Nicht nötig, ich habe ich Dich schon verstanden. Dies scheint jedoch andersherum nicht der Fall zu sein :-(

                  Wie gesagt, entweder Du suchst den entsprechenden Bildlink im Dokument oder Du ergibst ein mit JS erzeugtes Objekt. Ersteres geht zB mit document.anchors(). Letzteres kann zB über createElement() erfolgen.

                  Mit freundlichem Gruß
                  Micha

                  1. ich habe also deine tipps befolgt. das ergebins: es öffnet sich nur das bild - ohne lightbox. eine "rückkehr" auf die seite ist somit auch nicht möglich, da immer wieder die funktion "öffne lightbox" ausgeführt wird...

                    schade, dass es keine (einfache) lösung für mein problem zu geben scheint.

                    danke trotzdem für die hilfeversuche.

                    grüße turtle

                    1. Hallo turtleshark,

                      ich habe also deine tipps befolgt.

                      Nein, hast Du leider nicht.

                      schade, dass es keine (einfache) lösung für mein problem zu geben scheint.

                      Ich habe es nie probiert. Sollte es so gehen, wie ich vermutete, ist die Lösung recht trivial.

                      Die Startmethode benötigt ein Anker-Objekt. Nehmen wir an, Du hast im Dokument folgendes stehen:

                      <a href="/pfad/zum/bild.ext" rel="lightbox" id="erstesBild">Linktext</a>

                      Dann kannst Du daraus wie folgt vorgehen:

                        
                      function initLightbox() {  
                        var aObj = document.getElementById("erstesBild"); //alternativ auch über anchors()  
                        myLightbox = new lightbox();  
                        myLightbox.start( aObj ); // hier die Uebergabe des Link-Objektes
                      

                      }

                      Mit freundlichem Gruß
                      Micha