Forum de discussion
Forum « Programmation Javascript » (archives)
help me please.toujours mon probléme de popup.
Envoyé: 27 avril 2005, 13h21 par arakis
donc tout va bien,"EN LOCAL", mais une fois sur le serveur ça ne fonctionne plus.
<HTML>
<HEAD>
<TITLE>Slideshow</TITLE>
<style type="text/css">
body { background: black; }
p { font: normal normal normal 12pt/16pt "Times New Roman", Times, serif; color: red; 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: white; }
.code { font-family: courier new, fixedsys; color: green; }
</style>
</HEAD>
<BODY onLoad="focusOnLaunch()">
<SCRIPT LANGUAGE="JavaScript">
var rep = "";
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] = 'image01.jpg';
tabImgSave[1] = 'image02.jpg';
tabImgSave[2] = 'image03.jpg';
tabImgSave[3] = 'image04.jpg';
tabImgSave[4] = 'image05.jpg';
tabImgSave[5] = 'image06.jpg';
var nb_img = tabImgSave.length;
// 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[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édente
function 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édente
function 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ètre
function 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 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>
<br>
<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>
Réponses
|