Retourner ' la page d'accueil de TJSRetourner ' la page d'accueil de TJS
Ce script est déclaré obsolète. Il n'est conservé que pour information.

Script : Diaporama en popups

Un diaporama entièrement paramétrable (durée d'affichage, rotation aléatoire) présentant habilement une collection de photos dans un popup centré et ajusté.

Exécution du script

Code source

<HTML><HEAD><TITLE>Slideshow démo</TITLE><!-- (c) robloche@fr.st, 2003                                  --><!--                                                           --><!-- Ce script a été testé dans les configurations suivantes : --><!--   . Windows XP Pro & Home + Internet Explorer 6           --><!--   . Windows 2000 + Internet Explorer 5.5                  --><!--   . Windows 98 + Internet Explorer 6                      --><!--   . Windows Me + Internet Explorer 6                      --><!--   . Windows Me + Mozilla                                  --><!--   . Linux Debian + Opera                                  --><!--   . Linux Mandrake + Galeon                               --><!--   . Linux Mandrake + Mozilla                              --><style type="text/css">body     { background: #FFFFF5; }p        { font: normal normal normal 12pt/16pt "Times New Roman", Times, serif; color: black; text-decoration: none; text-align: justify; text-indent: 0em; }.title   { font-size: 24px; text-align: center; font-weight: bold; border: solid #0000BB 0px; border-width: 1px 0px 1px 0px; padding: 5px; background: #BFDDFF; text-indent: 0em; }.section { font-size: 18px; font-weight: bold; border: solid #0000BB 0px; border-width: 1px 0px 1px 0px; padding: 5px; background: #BFDDFF; text-indent: 0em; }.button  { font-weight: bold; color: blue; }.code    { font-family: courier new, fixedsys; color: green; }</style></HEAD><BODY onLoad="focusOnLaunch()"><SCRIPT LANGUAGE="JavaScript">var rep = "";  // Répertoire des images du diaporama (vide si meme repertoire que le fichier html)var num = 0;var myCounter;var next_img = new Image;next_img.src = rep+"pixel_transparent.gif"; var wPopup;var tabImg;var tabImgSave = new Array;tabImgSave[0] = 'forme_01.gif';tabImgSave[1] = 'forme_02.gif';tabImgSave[2] = 'forme_03.gif';tabImgSave[3] = 'forme_04.gif';tabImgSave[4] = 'forme_05.gif';tabImgSave[5] = 'forme_06.gif';tabImgSave[6] = 'forme_07.gif';tabImgSave[7] = 'forme_08.gif';var nb_img = tabImgSave.length;           //// Les trois fonctions suivantes (+ éventuellement, "mySplice")// servent à mélanger un tableau quelconque à partir d'une// permutation tirée aléatoirement//// Méthode "splice" si elle n'existe pas//   tab : tableau//   s   : début de la suppression//   l   : nombre d'éléments à supprimerfunction mySplice(s, l) {    if(s+l > this.length) l = this.length-s;            for(var i=s; i<this.length; ++i)        this[i] = this[i+1];    delete this[this.length-1];    this.length--;}// Est-ce que la méthode "splice" est disponible ?if(!Array.prototype.splice) {    // Non, alors on utilise la version "maison"    Array.prototype.splice = mySplice;}// Génère une fonctione sous-excédentefunction fctSsExc() {    var fct = new Array;    for(var i=0; i<nb_img; i++) {        fct[i] = Math.floor( Math.random()*(nb_img-i) );    }    return fct;}// Construit une permutation à partir d'une fonction sous-excédentefunction buildSigma() {    var fct_ss_exc = fctSsExc();    var set_N       = new Array;    for(var i=0; i<nb_img; i++) {        set_N[i] = i;    }    var sigma = new Array;    for(var i=0; i<nb_img; i++) {        sigma[i] = set_N[fct_ss_exc[i]];        set_N.splice(fct_ss_exc[i],1);    }    return sigma;}// Retourne une version mélangée du tableau passé en paramètrefunction shuffleArray(myArray) {    var sigma    = buildSigma();    var newArray = new Array;    for(var i=0; i<nb_img; i++) {        newArray[i] = myArray[sigma[i]];    }    return newArray;}//// Fin des fonctions de mélange//// Donne le focus au bouton "Lancer"function focusOnLaunch() {    window.document.forms.settings.bLaunch.focus();}// Donne le focus au bouton "Stopper"function focusOnStop() {    window.document.forms.settings.bStop.focus();}function next() {    // Est-ce que l'image suivante est oréchargée ?    if(next_img.complete) {        // Oui, alors après le temps de pause choisi par l'utilisateur, cette image remplacera l'actuelle        myCounter = setTimeout("launch()", 1000*window.document.settings.tempo.value);    }    else {        // Non, alors on continue d'attendre qu'elle le soit        myCounter = setTimeout("next()", 250);    }}// Lance le slideshowfunction launchFirst() {    // Petite vérification de la temporisation choisie    if(window.document.settings.tempo.value == "") {        alert("Précisez une temporisation entre 0 et 60 secondes...");        return false;    }    // Ordre normal ou aléatoire    if(window.document.settings.order[1].checked) {        tabImg = shuffleArray(tabImgSave);    }    else {        tabImg = tabImgSave;    }    // Avant de lancer le slideshow, on désactive tous les éléments du formulaire    // et on active le bouton "Stopper"    next_img.src = rep+tabImg[0];    window.document.forms.settings.bStop.disabled    = false;    focusOnStop();    window.document.forms.settings.bLaunch.disabled  = true;    window.document.forms.settings.repeat.disabled   = true;    window.document.forms.settings.order[0].disabled = true;    window.document.forms.settings.order[1].disabled = true;    window.document.forms.settings.tempo.disabled    = true;        launch();}// Poursuit le slideshowfunction launch() {    // Si la fenêtre n'existe pas ou est fermée, on la réouvre    if(!wPopup || wPopup.closed) {        wPopup = window.open('', 'img_popup', 'width=50, height=50, top='+(screen.height-50)/2+', left='+(screen.width-50)/2+', status=no, directories=no, toolbar=no, location=no, menubar=no, scrollbars=no, resizable=yes');    }    // On écrit le contenu de la fenêtre popup    wPopup.document.clear();    wPopup.document.write("<HTML><HEAD><TITLE>Slideshow : "+(num+1)+"/"+nb_img+"</TITLE></HEAD>");    // La fonction qui attend que l'image soit chargée et affichée pour redimensionner la fenêtre à la bonne taille    wPopup.document.write('<SCRIPT language="JavaScript">nfunction checkSize() { if(document.images && document.images[0].complete) { w = document.images[0].width+50; h = document.images[0].height+100; window.resizeTo(w, h); window.moveTo((screen.width-w)/2, (screen.height-h)/2); document.images[0].style.visibility = "visible"; window.focus(); if(opener.next_img.src != opener.rep+opener.tabImg[opener.num]) { opener.next_img.src = opener.rep+opener.tabImg[opener.num]; } } else { setTimeout("checkSize()", 250); } }n</'+'SCRIPT>');        wPopup.document.write('<BODY bgcolor="#FFFFFF" leftMargin="0" topMargin="0" marginWidth="0" marginHeight="0">');    wPopup.document.write('<table width="100%" height="100%" align="center" cellpadding="0" cellspacing="0"><tr valign="middle"><td align="center"><img src="'+next_img.src+'" border="0" onLoad="checkSize()" onClick="window.opener.stop()" style="visibility:hidden"></td></tr></table>');    wPopup.document.write('</BODY></HTML>');    wPopup.document.close();    num++;        // On a passé toutes les images, on repart du début    if(num == nb_img) num = 0;        // Si "Répéter" n'est pas cochée, on stoppe le slideshow    if(num == 0 && !window.document.settings.repeat.checked) {        setTimeout("stop()", 1000*window.document.settings.tempo.value);        return false;    }    // En cas de répétition en mode aléatoire, on remélange les images    if(num == 0 && window.document.settings.order[1].checked) {        tabImg = shuffleArray(tabImgSave);    }    next();}// Stoppe le slideshowfunction stop() {    clearTimeout(myCounter);    wPopup.close();    // On réactive tous les éléments du formulaire    // et on désactive le bouton "Stopper"    window.document.forms.settings.bLaunch.disabled  = false;    focusOnLaunch();    window.document.forms.settings.bStop.disabled    = true;    window.document.forms.settings.repeat.disabled   = false;    window.document.forms.settings.order[0].disabled = false;    window.document.forms.settings.order[1].disabled = false;    window.document.forms.settings.tempo.disabled    = false;    num = 0;}// Vérification de la temporisation à chaque modification de celle-cifunction checkTempo() {    var t = window.document.settings.tempo.value;    if(isNaN(t) || t<0 || t>60) {        window.document.settings.tempo.value = 3;        alert("Mauvaise temporisation...nEntrez un temps compris entre 0 et 60 secondes.");        return false;    }}</script><p class="title">Slideshow</p><p>Ce script vous permet de faire défiler des images de manière automatique dans   une fenêtre popup, la taille de celle-ci s'adaptant à chaque image. Vous pouvez   sélectionner l'ordre de défilement (<font class="button">normal</font> ou <font class="button">aléatoire</font>),   choisir si le slideshow doit se répéter indéfiniment (si <font class="button">aléatoire</font>   est sélectionné, un nouveau mélange est effectué à chaque répétition), et enfin,   préciser le temps pendant lequel chaque image restera à l'écran (hors temps   de chargement de l'image). Fort logiquement, à tout moment, un clic sur <font class="button">Stopper</font>   (ou directement sur une photo, c'est moins logique, mais c'est plus pratique)   arrête le slideshow.</p><p>&Eacute;videmment, on peut modifier plein de choses ici. On peut par exemple   ajouter le nom de l'image dans le popup, ou d'autres renseignements. On peut   aussi, pour rendre le script plus dynamique, remplir le tableau des images <font class="code">tabImgSave</font> grâce à du PHP de façon à parcourir toutes les images d'un répertoire.</p><p><strong><u>Note</u> :</strong> Pour mélanger les images, on utilise la fonction <font class="code">shuffleArray()</font>, celle-ci utilisant <font class="code">buildSigma()</font> et <font class="code">fctSsExc()</font>. Vous pouvez bien sûr réutiliser ces fonctions dans un autre script pour mélanger n'importe quel type de tableau.</p><br>Script proposé par  robloche pour <A href="http://www.toutjavascript.com">Tout Javascript.com</A><form name="settings">                      <table align="center" cellpadding="2" cellspacing="0" border="0">    <tr>         <td><p class="left"> <input type="radio" name="order" value="normal" checked> ordre normal&nbsp;&nbsp;&nbsp;            <input type="radio" name="order" value="aléatoire"> ordre aléatoire</p>        </td>    </tr>    <tr>         <td>            <p class="left">            <input type="checkbox" name="repeat"> répétition</p>       </td>    </tr>    <tr>         <td>            <p class="left">Temporisation :             <input type="text" name="tempo" value="3" size="4" maxlength="2" style="background:#FFFFFF;color:#000033;font-size:14;font-family:Courier,monospace;text-align:center;" onKeyUp="checkTempo()" onChange="checkTempo()"> seconde(s)</p>            </td>    </tr></table><br><table align="center" cellpadding="2" cellspacing="0" border="0">    <tr>         <td align="center">            <input type="button" onClick="launchFirst()" name="bLaunch" value="Lancer"  style="width: 150px">&nbsp;&nbsp;&nbsp;&nbsp;             <input type="button" onClick="stop()"        name="bStop"   value="Stopper" style="width: 150px" disabled>        </td>    </tr></table></form></BODY></HTML>

Troisième édition Tout JavaScript chez Dunod

Tout JavaScript le livre chez DunodEn savoir plus
Sortie le 4 janvier 2023

Version papier 29€90
Format électronique 22€99.

Commandez en ligne

Chercher une fonction, un objet, ...

Le graph des objets JavaScript



Chargement
en cours...
Le 25/04/2024 15:21:55 sur php 7 en 167.66 ms