tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1411
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sschewet sschewet ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    6
    Hallo,

    ich habe ein Problem mit dem Lightbox-Effekt. Ich habe alles so gemacht, wie auf dieser Seite geschildert 8http://pingalerie.de/photos-oder-bilder-mit-lightbox-anschaulicher-darstellen-anleitung/) . Trotzdem passiert bei mir immer dasselbe: Klicke ich auf das Bild wird es nur in einem neuen Fenster geöffnet. Auch das initLightbox in den preload mit hineinzunehmen bringt nicht den gewünschten Effekt: <body onload="MM_preloadImages('img/liebe_gross.jpg');initLightbox()">

    Was kann ich noch tun?
     

  2. #2
    Avatar von con-f-use
    con-f-use con-f-use ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Ort
    München / Innsbruck
    Beiträge
    2.263
    Du könntest z.B. mal eine übersichtlichen Beitrag schreiben. Etwas mehr Informationsinhalt wäre auch nicht schlecht.

    Es ist einfach so, dass du es einem gerade etwas schwer machst. Es bräuchte z.B. die Datei (oder einen Link drauf), wo du das eingebaut hast und alle anderen beteiligten Dateien. Der Fehler kann ja irgentwo liegen.
    Geändert von con-f-use (11.06.07 um 11:42 Uhr)
     
    Wäre der Satz "Ich möchte auf meinem Fisch-und-Chips-Schild einen Bindestrich zwischen die Wörter Fisch und und und und und Chips machen" nicht deutlicher, wenn Anführungszeichen vor Fisch und zwischen Fisch und und und und und und und und und und und und und und und und und und und und und Chips und auch nach Chips wären?

    | Meine Homepage: Forschung, unethische | Meine Seite mit viel verlangten Javascrits |

    -----------

    Zufriedenstellende Beiträge bitte als erledigt markieren!


  3. #3
    sschewet sschewet ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    6
    Auf folgender Seite :

    http://schewetzky.de/md2/website/index.html

    habe ich es angewendet.
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    wo genau hast du denn MM_preloadImages() versteckt?
     

  5. #5
    sschewet sschewet ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    6
    Das "MM_preloadImages('img/liebe_gross.jpg'); initLightbox()" habe ich direkt in das body-Tag meiner Index-Seite geschrieben.
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Nö....ich meine, wo die Funktion steht?
    Wenn du eine Funktion aufrufst, die nicht existiert, erzeugt das einen Skriptfehler!
     

  7. #7
    Avatar von con-f-use
    con-f-use con-f-use ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Ort
    München / Innsbruck
    Beiträge
    2.263
    Ich glaube er benutzt den Dreamweaver oder einen ähnlichen WYSIWYG-HTML-Editor und der benutzt diese Funktion, um Bilder zu preloaden. Habe den Funktionsnamen in dem zusammenhang auf jeden fall schon mal gesehen.
    Der Dreamweaver fügt die Funktion automatisch ein. Die sollte also keine Probleme machen.

    Habe ja die starke Vermutung, dass du bzw. dein Editor was anderes vermukrst hast.

    Also bitte: Alle beteiligten Dateien hier zugänglich machen oder mal die Fehlermeldungen in der JS-Konsole anschauen.
    Geändert von con-f-use (11.06.07 um 12:34 Uhr)
     
    Wäre der Satz "Ich möchte auf meinem Fisch-und-Chips-Schild einen Bindestrich zwischen die Wörter Fisch und und und und und Chips machen" nicht deutlicher, wenn Anführungszeichen vor Fisch und zwischen Fisch und und und und und und und und und und und und und und und und und und und und und Chips und auch nach Chips wären?

    | Meine Homepage: Forschung, unethische | Meine Seite mit viel verlangten Javascrits |

    -----------

    Zufriedenstellende Beiträge bitte als erledigt markieren!


  8. #8
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Jo, die Funktion ist vom DW, bloss sie steht nirgends, also erzeugt ihr Aufruf einen Fehler, und der Rest wird ignoriert im onload.
     

  9. #9
    sschewet sschewet ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    6
    ok, habe die Funktion mal eingebaut in den Header.

    meine Dateien sehen wie folgt aus:
    Index.html
    HTML-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Projekt Mediendesign</title>
    	<SCRIPT language=JavaScript>		
    		 function MM_preloadImages() { 
    			var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    			var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    			if (a[ i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[ i];}}
    		}		
    	</SCRIPT>
    	<script src="js/prototype.js" type="text/javascript"></script>
    	<script src="js/scriptaculous.js?load=effects" type="text/javascript"></script>
    	<!-- <script src="http://schewetzky.de/md2/website/js/effects.js" type="text/javascript"></script> -->
    	<script src="js/ligthbox.js" type="text/javascript"></script>
    	
    
    	<link rel="stylesheet" type="text/css" href="css/style.css" /> 
    	<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body  onload="MM_preloadImages('img/liebe_gross.jpg'); initLightbox()">
    	<div id=logo> </div>
    
         <!--  <div onclick="new Effect.BlindDown('wortkollage'); return false">
          Aufgaben
          </div>
          <div id="wortkollage" style="display: none;">
          Wordkollage
          </div> -->
    		
    	<div id=Navi>
    		<ul id=Navigation>Aufgaben
    			<li><a href="wortkollage.html">Wortkollage</a></li>
      			<li><a href="beleuchtung.html">Beleuchtungssituation</a></li>
      			<li><a href="tiefenschaerfe.html">Tiefensch&auml;rfe</a></li>
    			<li><a href="tonwerte.html">Tonwerte</a></li>
    			<li><a href="ci.html">Corporate Identity</a></li>
    		</ul>
    	</div>
    	
    	<div id="Inhalt">
    			<h1>Liebe und Luxus </h1>
    			<!-- Ausgangs - Bild -->
    			<a href="img/liebe.jpg" rel="lightbox[monospot]" title="Description"><img src="img/liebe.jpg"></a> 
     			
    			<!-- Ausgangs - Text -->
    			<a href="img/liebe.jpg" rel="lightbox[monospot]" title="Description">Klicke diesen Link</a> 
    	</div>
    </body>
    </html>
    lightbox.css
    HTML-Code:
    #lightbox{
    	position: absolute;
    	left: 0;
    	width: 100%;
    	z-index: 100;
    	text-align: center;
    	line-height: 0;
    	}
    
    #lightbox a img{ border: none; }
    
    #outerImageContainer{
    	position: relative;
    	background-color: #fff;
    	width: 250px;
    	height: 250px;
    	margin: 0 auto;
    	}
    
    #imageContainer{
    	padding: 10px;
    	}
    
    #loading{
    	position: absolute;
    	top: 40%;
    	left: 0%;
    	height: 25%;
    	width: 100%;
    	text-align: center;
    	line-height: 0;
    	}
    #hoverNav{
    	position: absolute;
    	top: 0;
    	left: 0;
    	height: 100%;
    	width: 100%;
    	z-index: 10;
    	}
    #imageContainer>#hoverNav{ left: 0;}
    #hoverNav a{ outline: none;}
    
    #prevLink, #nextLink{
    	width: 49%;
    	height: 100%;
    	background: transparent url(images/blank.gif) no-repeat; /* Trick IE into showing hover */
    	display: block;
    	}
    #prevLink { left: 0; float: left;}
    #nextLink { right: 0; float: right;}
    #prevLink:hover, #prevLink:visited:hover { background: url(images/prevlabel.gif) left 15% no-repeat; }
    #nextLink:hover, #nextLink:visited:hover { background: url(images/nextlabel.gif) right 15% no-repeat; }
    
    
    #imageDataContainer{
    	font: 10px Verdana, Helvetica, sans-serif;
    	background-color: #fff;
    	margin: 0 auto;
    	line-height: 1.4em;
    	overflow: auto;
    	width: 100%	
    	}
    
    #imageData{	padding:0 10px; color: #666; }
    #imageData #imageDetails{ width: 70%; float: left; text-align: left; }	
    #imageData #caption{ font-weight: bold;	}
    #imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em;	}			
    #imageData #bottomNavClose{ width: 66px; float: right;  padding-bottom: 0.7em;	}	
    		
    #overlay{
    	position: absolute;
    	top: 0;
    	left: 0;
    	z-index: 90;
    	width: 100%;
    	height: 500px;
    	background-color: #000;
    	}
    lightbox.js
    HTML-Code:
    // -----------------------------------------------------------------------------------
    //
    //	Lightbox v2.03.3
    //	by Lokesh Dhakar - http://www.huddletogether.com
    //	5/21/06
    //
    //	For more information on this script, visit:
    //	http://huddletogether.com/projects/lightbox2/
    //
    //	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
    //	
    //	Credit also due to those who have helped, inspired, and made their code available to the public.
    //	Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), Thomas Fuchs(mir.aculo.us), and others.
    //
    //
    // -----------------------------------------------------------------------------------
    /*
    
    	Table of Contents
    	-----------------
    	Configuration
    	Global Variables
    
    	Extending Built-in Objects	
    	- Object.extend(Element)
    	- Array.prototype.removeDuplicates()
    	- Array.prototype.empty()
    
    	Lightbox Class Declaration
    	- initialize()
    	- updateImageList()
    	- start()
    	- changeImage()
    	- resizeImageContainer()
    	- showImage()
    	- updateDetails()
    	- updateNav()
    	- enableKeyboardNav()
    	- disableKeyboardNav()
    	- keyboardAction()
    	- preloadNeighborImages()
    	- end()
    	
    	Miscellaneous Functions
    	- getPageScroll()
    	- getPageSize()
    	- getKey()
    	- listenKey()
    	- showSelectBoxes()
    	- hideSelectBoxes()
    	- showFlash()
    	- hideFlash()
    	- pause()
    	- initLightbox()
    	
    	Function Calls
    	- addLoadEvent(initLightbox)
    	
    */
    // -----------------------------------------------------------------------------------
    
    //
    //	Configuration
    //
    var fileLoadingImage = "images/loading.gif";		
    var fileBottomNavCloseImage = "images/closelabel.gif";
    
    var overlayOpacity = 0.8;	// controls transparency of shadow overlay
    
    var animate = true;			// toggles resizing animations
    var resizeSpeed = 7;		// controls the speed of the image resizing animations (1=slowest and 10=fastest)
    
    var borderSize = 10;		//if you adjust the padding in the CSS, you will need to update this variable
    
    // -----------------------------------------------------------------------------------
    
    //
    //	Global Variables
    //
    var imageArray = new Array;
    var activeImage;
    
    if(animate == true){
    	overlayDuration = 0.2;	// shadow fade in/out duration
    	if(resizeSpeed > 10){ resizeSpeed = 10;}
    	if(resizeSpeed < 1){ resizeSpeed = 1;}
    	resizeDuration = (11 - resizeSpeed) * 0.15;
    } else { 
    	overlayDuration = 0;
    	resizeDuration = 0;
    }
    
    // -----------------------------------------------------------------------------------
    
    //
    //	Additional methods for Element added by SU, Couloir
    //	- further additions by Lokesh Dhakar (huddletogether.com)
    //
    Object.extend(Element, {
    	getWidth: function(element) {
    	   	element = $(element);
    	   	return element.offsetWidth; 
    	},
    	setWidth: function(element,w) {
    	   	element = $(element);
        	element.style.width = w +"px";
    	},
    	setHeight: function(element,h) {
       		element = $(element);
        	element.style.height = h +"px";
    	},
    	setTop: function(element,t) {
    	   	element = $(element);
        	element.style.top = t +"px";
    	},
    	setLeft: function(element,l) {
    	   	element = $(element);
        	element.style.left = l +"px";
    	},
    	setSrc: function(element,src) {
        	element = $(element);
        	element.src = src; 
    	},
    	setHref: function(element,href) {
        	element = $(element);
        	element.href = href; 
    	},
    	setInnerHTML: function(element,content) {
    		element = $(element);
    		element.innerHTML = content;
    	}
    });
    
    // -----------------------------------------------------------------------------------
    
    //
    //	Extending built-in Array object
    //	- array.removeDuplicates()
    //	- array.empty()
    //
    Array.prototype.removeDuplicates = function () {
        for(i = 0; i < this.length; i++){
            for(j = this.length-1; j>i; j--){        
                if(this[i][0] == this[j][0]){
                    this.splice(j,1);
                }
            }
        }
    }
    
    // -----------------------------------------------------------------------------------
    
    Array.prototype.empty = function () {
    	for(i = 0; i <= this.length; i++){
    		this.shift();
    	}
    }
    
    // -----------------------------------------------------------------------------------
    
    //
    //	Lightbox Class Declaration
    //	- initialize()
    //	- start()
    //	- changeImage()
    //	- resizeImageContainer()
    //	- showImage()
    //	- updateDetails()
    //	- updateNav()
    //	- enableKeyboardNav()
    //	- disableKeyboardNav()
    //	- keyboardNavAction()
    //	- preloadNeighborImages()
    //	- end()
    //
    //	Structuring of code inspired by Scott Upton (http://www.uptonic.com/)
    //
    var Lightbox = Class.create();
    
    Lightbox.prototype = {
    	
    	// initialize()
    	// Constructor runs on completion of the DOM loading. Calls updateImageList and then
    	// the function inserts html at the bottom of the page which is used to display the shadow 
    	// overlay and the image container.
    	//
    	initialize: function() {	
    		
    		this.updateImageList();
    
    		// Code inserts html at the bottom of the page that looks similar to this:
    		//
    		//	<div id="overlay"></div>
    		//	<div id="lightbox">
    		//		<div id="outerImageContainer">
    		//			<div id="imageContainer">
    		//				<img id="lightboxImage">
    		//				<div style="" id="hoverNav">
    		//					<a href="#" id="prevLink"></a>
    		//					<a href="#" id="nextLink"></a>
    		//				</div>
    		//				<div id="loading">
    		//					<a href="#" id="loadingLink">
    		//						<img src="images/loading.gif">
    		//					</a>
    		//				</div>
    		//			</div>
    		//		</div>
    		//		<div id="imageDataContainer">
    		//			<div id="imageData">
    		//				<div id="imageDetails">
    		//					<span id="caption"></span>
    		//					<span id="numberDisplay"></span>
    		//				</div>
    		//				<div id="bottomNav">
    		//					<a href="#" id="bottomNavClose">
    		//						<img src="images/close.gif">
    		//					</a>
    		//				</div>
    		//			</div>
    		//		</div>
    		//	</div>
    
    
    		var objBody = document.getElementsByTagName("body").item(0);
    		
    		var objOverlay = document.createElement("div");
    		objOverlay.setAttribute('id','overlay');
    		objOverlay.style.display = 'none';
    		objOverlay.onclick = function() { myLightbox.end(); }
    		objBody.appendChild(objOverlay);
    		
    		var objLightbox = document.createElement("div");
    		objLightbox.setAttribute('id','lightbox');
    		objLightbox.style.display = 'none';
    		objLightbox.onclick = function(e) {	// close Lightbox is user clicks shadow overlay
    			if (!e) var e = window.event;
    			var clickObj = Event.element(e).id;
    			if ( clickObj == 'lightbox') {
    				myLightbox.end();
    			}
    		};
    		objBody.appendChild(objLightbox);
    			
    		var objOuterImageContainer = document.createElement("div");
    		objOuterImageContainer.setAttribute('id','outerImageContainer');
    		objLightbox.appendChild(objOuterImageContainer);
    
    		// When Lightbox starts it will resize itself from 250 by 250 to the current image dimension.
    		// If animations are turned off, it will be hidden as to prevent a flicker of a
    		// white 250 by 250 box.
    		if(animate){
    			Element.setWidth('outerImageContainer', 250);
    			Element.setHeight('outerImageContainer', 250);			
    		} else {
    			Element.setWidth('outerImageContainer', 1);
    			Element.setHeight('outerImageContainer', 1);			
    		}
    
    		var objImageContainer = document.createElement("div");
    		objImageContainer.setAttribute('id','imageContainer');
    		objOuterImageContainer.appendChild(objImageContainer);
    	
    		var objLightboxImage = document.createElement("img");
    		objLightboxImage.setAttribute('id','lightboxImage');
    		objImageContainer.appendChild(objLightboxImage);
    	
    		var objHoverNav = document.createElement("div");
    		objHoverNav.setAttribute('id','hoverNav');
    		objImageContainer.appendChild(objHoverNav);
    	
    		var objPrevLink = document.createElement("a");
    		objPrevLink.setAttribute('id','prevLink');
    		objPrevLink.setAttribute('href','#');
    		objHoverNav.appendChild(objPrevLink);
    		
    		var objNextLink = document.createElement("a");
    		objNextLink.setAttribute('id','nextLink');
    		objNextLink.setAttribute('href','#');
    		objHoverNav.appendChild(objNextLink);
    	
    		var objLoading = document.createElement("div");
    		objLoading.setAttribute('id','loading');
    		objImageContainer.appendChild(objLoading);
    	
    		var objLoadingLink = document.createElement("a");
    		objLoadingLink.setAttribute('id','loadingLink');
    		objLoadingLink.setAttribute('href','#');
    		objLoadingLink.onclick = function() { myLightbox.end(); return false; }
    		objLoading.appendChild(objLoadingLink);
    	
    		var objLoadingImage = document.createElement("img");
    		objLoadingImage.setAttribute('src', fileLoadingImage);
    		objLoadingLink.appendChild(objLoadingImage);
    
    		var objImageDataContainer = document.createElement("div");
    		objImageDataContainer.setAttribute('id','imageDataContainer');
    		objLightbox.appendChild(objImageDataContainer);
    
    		var objImageData = document.createElement("div");
    		objImageData.setAttribute('id','imageData');
    		objImageDataContainer.appendChild(objImageData);
    	
    		var objImageDetails = document.createElement("div");
    		objImageDetails.setAttribute('id','imageDetails');
    		objImageData.appendChild(objImageDetails);
    	
    		var objCaption = document.createElement("span");
    		objCaption.setAttribute('id','caption');
    		objImageDetails.appendChild(objCaption);
    	
    		var objNumberDisplay = document.createElement("span");
    		objNumberDisplay.setAttribute('id','numberDisplay');
    		objImageDetails.appendChild(objNumberDisplay);
    		
    		var objBottomNav = document.createElement("div");
    		objBottomNav.setAttribute('id','bottomNav');
    		objImageData.appendChild(objBottomNav);
    	
    		var objBottomNavCloseLink = document.createElement("a");
    		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
    		objBottomNavCloseLink.setAttribute('href','#');
    		objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }
    		objBottomNav.appendChild(objBottomNavCloseLink);
    	
    		var objBottomNavCloseImage = document.createElement("img");
    		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);
    		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);
    	},
    
    
    	//
    	// updateImageList()
    	// Loops through anchor tags looking for 'lightbox' references and applies onclick
    	// events to appropriate links. You can rerun after dynamically adding images w/ajax.
    	//
    	updateImageList: function() {	
    		if (!document.getElementsByTagName){ return; }
    		var anchors = document.getElementsByTagName('a');
    		var areas = document.getElementsByTagName('area');
    
    		// loop through all anchor tags
    		for (var i=0; i<anchors.length; i++){
    			var anchor = anchors[i];
    			
    			var relAttribute = String(anchor.getAttribute('rel'));
    			
    			// use the string.match() method to catch 'lightbox' references in the rel attribute
    			if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
    				anchor.onclick = function () {myLightbox.start(this); return false;}
    			}
    		}
    
    		// loop through all area tags
    		// todo: combine anchor & area tag loops
    		for (var i=0; i< areas.length; i++){
    			var area = areas[i];
    			
    			var relAttribute = String(area.getAttribute('rel'));
    			
    			// use the string.match() method to catch 'lightbox' references in the rel attribute
    			if (area.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
    				area.onclick = function () {myLightbox.start(this); return false;}
    			}
    		}
    	},
    	
    	
    	//
    	//	start()
    	//	Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
    	//
    	start: function(imageLink) {	
    
    		hideSelectBoxes();
    		hideFlash();
    
    		// stretch overlay to fill page and fade in
    		var arrayPageSize = getPageSize();
    		Element.setWidth('overlay', arrayPageSize[0]);
    		Element.setHeight('overlay', arrayPageSize[1]);
    
    		new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: overlayOpacity });
    
    		imageArray = [];
    		imageNum = 0;		
    
    		if (!document.getElementsByTagName){ return; }
    		var anchors = document.getElementsByTagName( imageLink.tagName);
    
    		// if image is NOT part of a set..
    		if((imageLink.getAttribute('rel') == 'lightbox')){
    			// add single image to imageArray
    			imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));			
    		} else {
    		// if image is part of a set..
    
    			// loop through anchors, find other images in set, and add them to imageArray
    			for (var i=0; i<anchors.length; i++){
    				var anchor = anchors[i];
    				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))){
    					imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
    				}
    			}
    			imageArray.removeDuplicates();
    			while(imageArray[imageNum][0] != imageLink.getAttribute('href')) { imageNum++;}
    		}
    
    		// calculate top and left offset for the lightbox 
    		var arrayPageScroll = getPageScroll();
    		var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
    		var lightboxLeft = arrayPageScroll[0];
    		Element.setTop('lightbox', lightboxTop);
    		Element.setLeft('lightbox', lightboxLeft);
    		
    		Element.show('lightbox');
    		
    		this.changeImage(imageNum);
    	},
    
    	//
    	//	changeImage()
    	//	Hide most elements and preload image in preparation for resizing image container.
    	//
    	changeImage: function(imageNum) {	
    		
    		activeImage = imageNum;	// update global var
    
    		// hide elements during transition
    		if(animate){ Element.show('loading');}
    		Element.hide('lightboxImage');
    		Element.hide('hoverNav');
    		Element.hide('prevLink');
    		Element.hide('nextLink');
    		Element.hide('imageDataContainer');
    		Element.hide('numberDisplay');		
    		
    		imgPreloader = new Image();
    		
    		// once image is preloaded, resize image container
    		imgPreloader.onload=function(){
    			Element.setSrc('lightboxImage', imageArray[activeImage][0]);
    			myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
    			
    			imgPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
    		}
    		imgPreloader.src = imageArray[activeImage][0];
    	},
    
    	//
    	//	resizeImageContainer()
    	//
    	resizeImageContainer: function( imgWidth, imgHeight) {
    
    		// get curren width and height
    		this.widthCurrent = Element.getWidth('outerImageContainer');
    		this.heightCurrent = Element.getHeight('outerImageContainer');
    
    		// get new width and height
    		var widthNew = (imgWidth  + (borderSize * 2));
    		var heightNew = (imgHeight  + (borderSize * 2));
    
    		// scalars based on change from old to new
    		this.xScale = ( widthNew / this.widthCurrent) * 100;
    		this.yScale = ( heightNew / this.heightCurrent) * 100;
    
    		// calculate size difference between new and old image, and resize if necessary
    		wDiff = this.widthCurrent - widthNew;
    		hDiff = this.heightCurrent - heightNew;
    
    		if(!( hDiff == 0)){ new Effect.Scale('outerImageContainer', this.yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); }
    		if(!( wDiff == 0)){ new Effect.Scale('outerImageContainer', this.xScale, {scaleY: false, delay: resizeDuration, duration: resizeDuration}); }
    
    		// if new and old image are same size and no scaling transition is necessary, 
    		// do a quick pause to prevent image flicker.
    		if((hDiff == 0) && (wDiff == 0)){
    			if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);} 
    		}
    
    		Element.setHeight('prevLink', imgHeight);
    		Element.setHeight('nextLink', imgHeight);
    		Element.setWidth( 'imageDataContainer', widthNew);
    
    		this.showImage();
    	},
    	
    	//
    	//	showImage()
    	//	Display image and begin preloading neighbors.
    	//
    	showImage: function(){
    		Element.hide('loading');
    		new Effect.Appear('lightboxImage', { duration: resizeDuration, queue: 'end', afterFinish: function(){	myLightbox.updateDetails(); } });
    		this.preloadNeighborImages();
    	},
    
    	//
    	//	updateDetails()
    	//	Display caption, image number, and bottom nav.
    	//
    	updateDetails: function() {
    	
    		// if caption is not null
    		if(imageArray[activeImage][1]){
    			Element.show('caption');
    			Element.setInnerHTML( 'caption', imageArray[activeImage][1]);
    		}
    		
    		// if image is part of set display 'Image x of x' 
    		if(imageArray.length > 1){
    			Element.show('numberDisplay');
    			Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + 1) + " of " + imageArray.length);
    		}
    
    		new Effect.Parallel(
    			[ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
    			  new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration }) ], 
    			{ duration: resizeDuration, afterFinish: function() {
    				// update overlay size and update nav
    				var arrayPageSize = getPageSize();
    				Element.setHeight('overlay', arrayPageSize[1]);
    				myLightbox.updateNav();
    				}
    			} 
    		);
    	},
    
    	//
    	//	updateNav()
    	//	Display appropriate previous and next hover navigation.
    	//
    	updateNav: function() {
    
    		Element.show('hoverNav');				
    
    		// if not first image in set, display prev image button
    		if(activeImage != 0){
    			Element.show('prevLink');
    			document.getElementById('prevLink').onclick = function() {
    				myLightbox.changeImage(activeImage - 1); return false;
    			}
    		}
    
    		// if not last image in set, display next image button
    		if(activeImage != (imageArray.length - 1)){
    			Element.show('nextLink');
    			document.getElementById('nextLink').onclick = function() {
    				myLightbox.changeImage(activeImage + 1); return false;
    			}
    		}
    		
    		this.enableKeyboardNav();
    	},
    
    	//
    	//	enableKeyboardNav()
    	//
    	enableKeyboardNav: function() {
    		document.onkeydown = this.keyboardAction; 
    	},
    
    	//
    	//	disableKeyboardNav()
    	//
    	disableKeyboardNav: function() {
    		document.onkeydown = '';
    	},
    
    	//
    	//	keyboardAction()
    	//
    	keyboardAction: function(e) {
    		if (e == null) { // ie
    			keycode = event.keyCode;
    			escapeKey = 27;
    		} else { // mozilla
    			keycode = e.keyCode;
    			escapeKey = e.DOM_VK_ESCAPE;
    		}
    
    		key = String.fromCharCode(keycode).toLowerCase();
    		
    		if((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)){	// close lightbox
    			myLightbox.end();
    		} else if((key == 'p') || (keycode == 37)){	// display previous image
    			if(activeImage != 0){
    				myLightbox.disableKeyboardNav();
    				myLightbox.changeImage(activeImage - 1);
    			}
    		} else if((key == 'n') || (keycode == 39)){	// display next image
    			if(activeImage != (imageArray.length - 1)){
    				myLightbox.disableKeyboardNav();
    				myLightbox.changeImage(activeImage + 1);
    			}
    		}
    
    	},
    
    	//
    	//	preloadNeighborImages()
    	//	Preload previous and next images.
    	//
    	preloadNeighborImages: function(){
    
    		if((imageArray.length - 1) > activeImage){
    			preloadNextImage = new Image();
    			preloadNextImage.src = imageArray[activeImage + 1][0];
    		}
    		if(activeImage > 0){
    			preloadPrevImage = new Image();
    			preloadPrevImage.src = imageArray[activeImage - 1][0];
    		}
    	
    	},
    
    	//
    	//	end()
    	//
    	end: function() {
    		this.disableKeyboardNav();
    		Element.hide('lightbox');
    		new Effect.Fade('overlay', { duration: overlayDuration});
    		showSelectBoxes();
    		showFlash();
    	}
    }
    
    // -----------------------------------------------------------------------------------
    
    //
    // getPageScroll()
    // Returns array with x,y page scroll values.
    // Core code from - quirksmode.com
    //
    function getPageScroll(){
    
    	var xScroll, yScroll;
    
    	if (self.pageYOffset) {
    		yScroll = self.pageYOffset;
    		xScroll = self.pageXOffset;
    	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
    		yScroll = document.documentElement.scrollTop;
    		xScroll = document.documentElement.scrollLeft;
    	} else if (document.body) {// all other Explorers
    		yScroll = document.body.scrollTop;
    		xScroll = document.body.scrollLeft;	
    	}
    
    	arrayPageScroll = new Array(xScroll,yScroll) 
    	return arrayPageScroll;
    }
    
    // -----------------------------------------------------------------------------------
    
    //
    // getPageSize()
    // Returns array with page width, height and window width, height
    // Core code from - quirksmode.com
    // Edit for Firefox by pHaez
    //
    function getPageSize(){
    	
    	var xScroll, yScroll;
    	
    	if (window.innerHeight && window.scrollMaxY) {	
    		xScroll = window.innerWidth + window.scrollMaxX;
    		yScroll = window.innerHeight + window.scrollMaxY;
    	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    		xScroll = document.body.scrollWidth;
    		yScroll = document.body.scrollHeight;
    	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    		xScroll = document.body.offsetWidth;
    		yScroll = document.body.offsetHeight;
    	}
    	
    	var windowWidth, windowHeight;
    	
    //	console.log(self.innerWidth);
    //	console.log(document.documentElement.clientWidth);
    
    	if (self.innerHeight) {	// all except Explorer
    		if(document.documentElement.clientWidth){
    			windowWidth = document.documentElement.clientWidth; 
    		} else {
    			windowWidth = self.innerWidth;
    		}
    		windowHeight = self.innerHeight;
    	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    		windowWidth = document.documentElement.clientWidth;
    		windowHeight = document.documentElement.clientHeight;
    	} else if (document.body) { // other Explorers
    		windowWidth = document.body.clientWidth;
    		windowHeight = document.body.clientHeight;
    	}	
    	
    	// for small pages with total height less then height of the viewport
    	if(yScroll < windowHeight){
    		pageHeight = windowHeight;
    	} else { 
    		pageHeight = yScroll;
    	}
    
    //	console.log("xScroll " + xScroll)
    //	console.log("windowWidth " + windowWidth)
    
    	// for small pages with total width less then width of the viewport
    	if(xScroll < windowWidth){	
    		pageWidth = xScroll;		
    	} else {
    		pageWidth = windowWidth;
    	}
    //	console.log("pageWidth " + pageWidth)
    
    	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
    	return arrayPageSize;
    }
    
    // -----------------------------------------------------------------------------------
    
    //
    // getKey(key)
    // Gets keycode. If 'x' is pressed then it hides the lightbox.
    //
    function getKey(e){
    	if (e == null) { // ie
    		keycode = event.keyCode;
    	} else { // mozilla
    		keycode = e.which;
    	}
    	key = String.fromCharCode(keycode).toLowerCase();
    	
    	if(key == 'x'){
    	}
    }
    
    // -----------------------------------------------------------------------------------
    
    //
    // listenKey()
    //
    function listenKey () {	document.onkeypress = getKey; }
    	
    // ---------------------------------------------------
    
    function showSelectBoxes(){
    	var selects = document.getElementsByTagName("select");
    	for (i = 0; i != selects.length; i++) {
    		selects[i].style.visibility = "visible";
    	}
    }
    
    // ---------------------------------------------------
    
    function hideSelectBoxes(){
    	var selects = document.getElementsByTagName("select");
    	for (i = 0; i != selects.length; i++) {
    		selects[i].style.visibility = "hidden";
    	}
    }
    
    // ---------------------------------------------------
    
    function showFlash(){
    	var flashObjects = document.getElementsByTagName("object");
    	for (i = 0; i < flashObjects.length; i++) {
    		flashObjects[i].style.visibility = "visible";
    	}
    
    	var flashEmbeds = document.getElementsByTagName("embed");
    	for (i = 0; i < flashEmbeds.length; i++) {
    		flashEmbeds[i].style.visibility = "visible";
    	}
    }
    
    // ---------------------------------------------------
    
    function hideFlash(){
    	var flashObjects = document.getElementsByTagName("object");
    	for (i = 0; i < flashObjects.length; i++) {
    		flashObjects[i].style.visibility = "hidden";
    	}
    
    	var flashEmbeds = document.getElementsByTagName("embed");
    	for (i = 0; i < flashEmbeds.length; i++) {
    		flashEmbeds[i].style.visibility = "hidden";
    	}
    
    }
    
    
    // ---------------------------------------------------
    
    //
    // pause(numberMillis)
    // Pauses code execution for specified time. Uses busy code, not good.
    // Help from Ran Bar-On [ran2103@gmail.com]
    //
    
    function pause(ms){
    	var date = new Date();
    	curDate = null;
    	do{var curDate = new Date();}
    	while( curDate - date < ms);
    }
    /*
    function pause(numberMillis) {
    	var curently = new Date().getTime() + sender;
    	while (new Date().getTime();	
    }
    */
    // ---------------------------------------------------
    
    
    
    function initLightbox() { myLightbox = new Lightbox(); }
    Event.observe(window, 'load', initLightbox, false);
     

  10. #10
    Avatar von shybby
    shybby shybby ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Ort
    Schweiz (Baden AG)
    Beiträge
    27
    ich hatte Lightbox auch einige Zeit im einsatz, und wenn ich mich recht besinne, musst du doch dem Link noch die Class="Lightbox" zuweisen....
    Bin mir da aber nicht 100% sicher....

    Ich persönlich bevorzuge Thickbox..... ist viel flexibler,,
     
    man stirbt solange man lebt

    unsinnig ist wer keinen sinn für unsinn hat!

    http://www.pleasenice.com

  11. #11
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
     

  12. #12
    sschewet sschewet ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    6

    danke, peinlich, hab doch glatt 2 Buchstaben vertauscht! Tausendmal draufgeschaut...
     

Ähnliche Themen

  1. Problem mit Lightbox
    Von Mogli-Designz im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 10.08.10, 13:51
  2. Problem mit Lightbox
    Von 08154711 im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 28.07.10, 21:24
  3. Lightbox Problem...
    Von SonMiko im Forum CSS
    Antworten: 4
    Letzter Beitrag: 17.08.08, 15:19
  4. Lightbox CSS Problem
    Von Mad Martin im Forum CSS
    Antworten: 0
    Letzter Beitrag: 25.11.07, 21:13
  5. Problem mit JS Lightbox
    Von multimolti im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 23.04.07, 23:56