01net    Web


Actuellement en ligne : 65 Utilisateurs >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par PC-Conseil, Helger  
L'Ordinateur Individuel > Forum de L'Ordinateur Individuel > Programmation
> javascript dimension des fenetres
Auteur
Message
 
<     1       >
marvelous02
  bon courage
  :-)
  Posté le 08/02/2008 11:52:00       ?   @    
salut, je découvre le javascript. J'ai récuperer un script ici pour un diaporama. il redimensionne la fenetre. Si il fonctionne très bien avec firefox, les fenetres sont mal redimensionnees avec ie7. Y a t-il un moyen pour y remedier. Merci d'avance, amicalement
Diaporama visible ici. Et le script :

code javascript a écrit :

<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 à supprimer
function mySplice(s, l) {
if(s+l > this.length) l = this.length-s;

for(var i=s; i<this.length; ++i)
this = 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édente
function fctSsExc() {
var fct = new Array;
for(var i=0; i<nb_img; i++) {
fct = Math.floor( Math.random()*(nb_img-i) );
}
return fct;
}

// Construit une permutation à partir d'une fonction sous-excédente
function buildSigma() {
var fct_ss_exc = fctSsExc();
var set_N = new Array;

for(var i=0; i<nb_img; i++) {
set_N = i;
}

var sigma = new Array;

for(var i=0; i<nb_img; i++) {
sigma = set_N[fct_ss_exc];
set_N.splice(fct_ss_exc,1);
}
return sigma;
}

// Retourne une version mélangée du tableau passé en paramètre
function shuffleArray(myArray) {
var sigma = buildSigma();
var newArray = new Array;

for(var i=0; i<nb_img; i++) {
newArray = myArray[sigma];
}
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 slideshow
function 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 slideshow
function 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 slideshow
function 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-ci
function 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>É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
<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">
<input type="button" onClick="stop()" name="bStop" value="Stopper" style="width: 150px" disabled>
</td>
</tr>
</table>
</form>

</BODY>
</HTML>






-->Message édité par marvelous02 le 08/02/2008 11:55:20<--
-------
commençons par le plus simple et n'oublions pas d'informer ceux qui nous répondent !!
med365
  Bouläy hunter
  :-)
  Posté le 10/02/2008 18:20:18       ?   ^   @    
Tu sais, malheureusement le javascript d'IE a toujours été un peu "spécial" et pas très conforme à la norme ECMA (norme censée unifier le JS des navigateurs, encore faut ils qu'ils s'y mettent :sifflote: ) il y a de fortes chances que tu ais besoin de modifier pas mal ton script ou même d'en trouver un second pour IE mais la je ne peux pas t'aider je ne connais pas le javascript, désolé.
marvelous02
  bon courage
  :-)
  Posté le 10/02/2008 21:54:01       ?   @    
re, je suis sous firefox, et ce n'est malheureusement pas la cas de tout le monde. Tant pis pour eux... ;) mais merci quand même. amicalement
-------
commençons par le plus simple et n'oublions pas d'informer ceux qui nous répondent !!
prog++
  Windows--
  :-)
  Posté le 19/02/2008 21:11:53       ?   ^   @    
Je ne suis pas trés fort en javacript, mais je sais que tu peux donner un code special IE. Je ne comprends trés bien le code inscrit, donc je ne peux pas le modifier, mais si tu y arrive (avec l'aide d'un autre lecteur ?), essaye de créer des instructions double en utilisant :
if(document.all) {

ici viennent les instructions pour Internet Explorer

} else {

et ici les instructions pour les autres navigateurs

}


IE n'a jamais rien respecté coté standards. Dommage !
-------
Passer à linux sans délaisser windows ? C'est possible : http://www.winehq.com .
med365
  Bouläy hunter
  :-)
  Posté le 21/02/2008 16:33:24       ?   ^   @    
Salut

Si je peux me permettre une petite suggestion : j'ai testé ton diaporama et je trouve que le redimensionnement permanent est plutot agressif visuellement, pourquoi ne pas essayer en mettant la fenêtre en plein écran sans redimensionnement ? :)

Enfin après c'est question d'avis personnel ;)
marvelous02
  bon courage
  :-)
  Posté le 22/02/2008 00:11:07       ?   @    
med365 a écrit :
Salut

Si je peux me permettre une petite suggestion : j'ai testé ton diaporama et je trouve que le redimensionnement permanent est plutot agressif visuellement, pourquoi ne pas essayer en mettant la fenêtre en plein écran sans redimensionnement ? :)

Enfin après c'est question d'avis personnel ;)


re, merci prog++, mais je n'ai pas encore eu le temps d'approfondir, je te tiens au courant.

pour med365, merci pour ton avis, un oeil exterieur est toujours agréable. Je n'ai pas fais un diaporama ainsi par goût, mais comme je voulais tester un peu le javascript, j'ai trouvé celui-ci en surfant quelque peu. J'avais l'intention par la suite de modifier quelques lignes pour voir le changement. Et tu vois ça commence mal :( enfin, dès que je rattaque, je vous tiens au courant. amicalement
-------
commençons par le plus simple et n'oublions pas d'informer ceux qui nous répondent !!
6regp
  
   
  Posté le 25/02/2008 18:33:02       ?   ^   @    
le problème se trouve dans le pop lancé (function checkSize()).
la taille du pop modifié ici est la taille complète de la fenêtre (habillage, barres d'outils (sous ie7 la barre de liens) le bas de page ...) donc, forcement il faut prévoir une marge pour tout ça.
la taille des pops n'est pas bonne non plus chez moi sous kubuntu(emerald) ni avec FireFox ni avec konqueror ...
tu trouveras ici des exemples de galeries js utilisant mootools:
http://www.phatfusion.net/lightbox/
http://www.phatfusion.net/slideshow/
marvelous02
  bon courage
  :-)
  Posté le 25/02/2008 21:34:15       ?   @    
merci 6regp, beaux liens, je vous tiens au courant et encore merci à tous, amicalement
-------
commençons par le plus simple et n'oublions pas d'informer ceux qui nous répondent !!
<     1       >

L'Ordinateur Individuel > Forum de L'Ordinateur Individuel > Programmation
> javascript dimension des fenetres

Aller à :

Page générée en : 0.111s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

> paru le 01/10/2008