ju1385
Messages postés6Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention 4 juin 2007
-
25 mai 2007 à 12:07
nanie954
Messages postés12Date d'inscriptionjeudi 27 novembre 2003StatutMembreDernière intervention 3 novembre 2019
-
12 juin 2007 à 14:15
Bonjour,
j'ai ici un script simple de diaporama d'image que j'ai récupéré et qui marche bien.
Cependant, je voudrais y modifier/ajouter 2 choses (je ne maitrise pas du tout le javascript):
1/ ajouter un lien hypertexte indépendant sur chaque image,
2/ sur firefox le défilement des image est nikel, mais sur IE, il y a un "écrasement" de l'image précédente lorsqu'une nouvelle image s'affiche. Que faut il faire pour avoir le même rendu que sur firefox ? (je veux un affiche très simple comme vous pouvez le voir).
Je vous remercie par avance pour l'aide que vous pourrez m'apporter.
#### Voici le code (commenté) :
<SCRIPT language=JavaScript1.1>
// Dossier où se situent les images
var dossier=".";
// Le tableau qui va contenir les images.
var tab_images=new Array();
tab_images[0]=""+dossier+"/img1.JPG";
tab_images[1]=""+dossier+"/img2.JPG";
tab_images[2]=""+dossier+"/img3.JPG";
// Le délai de passage d'une image à l'autre en millisecondes -> 1s=1000
var delai=5000;
// Variable de compteur qui indiquera à quelle image on se trouve
var compteur=1;
// La fonction qui va permettre le défilement
function Diaporama(){
// partie où on applique les filtres propres à IE
if (window.createPopup)
diaporama.filters[0].apply();
document.images.diaporama.src=tab_images[compteur];
if (window.createPopup)
diaporama.filters[0].play();
// On incrémente le compteur de 1 pour passer à l'image suivante
compteur++;
// Si on a atteint la dernière image, on remet à zéro le compteur et on rappelle la fonction Diaporama()
if (compteur==tab_images.length)
compteur=0;
setTimeout("Diaporama()",delai)
}
// On charge au démarrage de la page la fonction de défilement des images
window.onload=new Function("setTimeout('Diaporama()',delai)")
</SCRIPT>
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 28 mai 2007 à 16:00
En effet, je n'avais pas penser au problème des popups bloquées.
Dans ce cas, il faut mettre un id sur ta balise a
et tu obtiendrais donc un nouveau script:
<html>
<head>
<title>
</title>
</head>
<SCRIPT language= JavaScript1.1>
// Dossier où se situent les images
var dossier=".";
// Le tableau qui va contenir les images.
var tab_images=new Array();
tab_images[0]=[dossier+"/13.JPG", " [ton lien] "];
tab_images[1] =[dossier+"/12.JPG", "[ton lien]"];
tab_images[2]= [dossier+"/11.JPG", " [ton lien] "];
// Le délai de passage d'une image à l'autre en millisecondes -> 1s =1000
var delai=1000;
// Variable de compteur qui indiquera à quelle image on se trouve
var compteur=1;
// La fonction qui va permettre le défilement
function Diaporama(){
// partie où on applique les filtres propres à IE
document.images.diaporama.src=tab_images[compteur][0];
document.getElementById("linkTo").href = tab_images[compteur][1];
// On incrémente le compteur de 1 pour passer à l'image suivante
compteur++;
// Si on a atteint la dernière image, on remet à zéro le compteur et on rappelle la fonction Diaporama()
if (compteur==tab_images.length)
compteur=0;
setTimeout("Diaporama()",delai)
}
// On charge au démarrage de la page la fonction de défilement des images
window.onload=new Function("setTimeout('Diaporama()',delai)")
</SCRIPT>
ju1385
Messages postés6Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention 4 juin 2007 25 mai 2007 à 13:13
Merci pour ta première indication (qui marche au poil ;) et de ta réponse rapide.
En ce qui concene le lien maintenant, je voudrais que lorsqu'une image s'affiche, on puisse cliquer dessus et cela nous ammène a une nouvelle page (tout simplement) et que chaque image aient un lien différent.
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 25 mai 2007 à 15:13
Ha, d'accord, je crois que j'ai compris...
remplace ton script par celui ci
<SCRIPT language= JavaScript1.1>
// Dossier où se situent les images
var dossier=".";
// Le tableau qui va contenir les images.
var tab_images=new Array();
tab_images[0]=[dossier+"/img1.JPG", " [lien de l'image 1] "];
tab_images[1] =[dossier+"/img2.JPG", "[lien de l'image 2]"];
tab_images[2]= [dossier+"/img3.JPG", " [lien de l'image 3] "];
// Le délai de passage d'une image à l'autre en millisecondes -> 1s =1000
var delai=5000;
// Variable de compteur qui indiquera à quelle image on se trouve
var compteur=1;
// La fonction qui va permettre le défilement
function Diaporama(){
// partie où on applique les filtres propres à IE
document.images.diaporama.src=tab_images[compteur][0];
document.images.diaporama.hrefLink=tab_images[compteur][1];
document.images.diaporama.onmousedown = function (){
window.open ( this.hrefLink,"_blank");
}
// On incrémente le compteur de 1 pour passer à l'image suivante
compteur++;
// Si on a atteint la dernière image, on remet à zéro le compteur et on rappelle la fonction Diaporama()
if (compteur==tab_images.length)
compteur=0;
setTimeout("Diaporama()",delai)
}
// On charge au démarrage de la page la fonction de défilement des images
window.onload=new Function("setTimeout('Diaporama()',delai)")
</SCRIPT>
et mets les bons liens à la place de [lien de l'image X]...
ju1385
Messages postés6Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention 4 juin 2007 28 mai 2007 à 14:49
ha ok, je te remercie encore, le script marche bien c'est cette fonctionnalité que je voulais obtenir.
Cependant, il y a un détail auquel je n'avais pas pensé et donc que je n'ai pas pu spécifié : les liens qui sont ouvert donnent lieu à des fenêtres "popup", qui sont bloquées par les navigateurs. Y a t-il un moyen de ne pas passer par des popup ? Peut être en passant par un script qui serait appellé dans une balise [XXXX ] ???
Je vous remercie par avance pour ttes réponses éventuelles ...
nanie954
Messages postés12Date d'inscriptionjeudi 27 novembre 2003StatutMembreDernière intervention 3 novembre 2019 3 juin 2007 à 12:12
Bonjour,
je suis trés interresee par ce script.quelqu'un peut-il me dire comment mettre le lien pour chaque image, j'ai tout essayé et ça ne marche pas. Aussi, pensez vous qu'il est possible de mettre un titre dans le tableau chaque image?
merci merci
nanie
ju1385
Messages postés6Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention 4 juin 2007 4 juin 2007 à 08:49
Voici un exemple concret du script :
<html>
<head>
<title>test img</title>
</head>
<SCRIPT language=JavaScript1.1>
//Suppression de code redondant, traduction des fonctions et variables en français, commentaires.
// Dossier où se situent vos images (si dans le même répertoire que le script, mettre un point -> var dossier="."; sinon mettre -> var dossier="img/diaporama";
var dossier=".";
// Le tableau qui va contenir vos images. Pour en rajouter, il suffit d'insérer la ligne suivante : tab_images[X]=""+dossier+"/nom_image.jpg";
// et de remplacer X par un numéro (différent des précédents)
var tab_images=new Array();
tab_images[0]=[dossier+"/img1.JPG", "http://tf1.fr"];
tab_images[1]=[dossier+"/img2.JPG", "http://france2.fr"];
tab_images[2]=[dossier+"/img3.JPG", "http://jimbert.net"];
// Le délai de passage d'une image à l'autre en millisecondes -> 1s=1000
var delai=5000;
// Variable de compteur qui indiquera à quelle image on se trouve
var compteur=1;
// La fonction qui va permettre le défilement
function Diaporama(){
// partie où on applique les filtres propres à IE
document.images.diaporama.src=tab_images[compteur][0];
document.getElementById("linkTo").href = tab_images[compteur][1];
// On incrémente le compteur de 1 pour passer à l'image suivante
compteur++;
// Si on a atteint la dernière image, on remet à zéro le compteur et on rappelle la fonction Diaporama()
if (compteur==tab_images.length)
compteur=0;
setTimeout("Diaporama()",delai)
}
// On charge au démarrage de la page la fonction de défilement des images
window.onload=new Function("setTimeout('Diaporama()',delai)")
</SCRIPT>
[# ]
</html>
Pour le titre dans le tableau, je ne sais pas du tout.
ju1385
Messages postés6Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention 4 juin 2007 4 juin 2007 à 08:49
Voici un exemple concret du script :
<html>
<head>
<title>test img</title>
</head>
<SCRIPT language=JavaScript1.1>
//Suppression de code redondant, traduction des fonctions et variables en français, commentaires.
// Dossier où se situent vos images (si dans le même répertoire que le script, mettre un point -> var dossier="."; sinon mettre -> var dossier="img/diaporama";
var dossier=".";
// Le tableau qui va contenir vos images. Pour en rajouter, il suffit d'insérer la ligne suivante : tab_images[X]=""+dossier+"/nom_image.jpg";
// et de remplacer X par un numéro (différent des précédents)
var tab_images=new Array();
tab_images[0]=[dossier+"/img1.JPG", "http://tf1.fr"];
tab_images[1]=[dossier+"/img2.JPG", "http://france2.fr"];
tab_images[2]=[dossier+"/img3.JPG", "http://jimbert.net"];
// Le délai de passage d'une image à l'autre en millisecondes -> 1s=1000
var delai=5000;
// Variable de compteur qui indiquera à quelle image on se trouve
var compteur=1;
// La fonction qui va permettre le défilement
function Diaporama(){
// partie où on applique les filtres propres à IE
document.images.diaporama.src=tab_images[compteur][0];
document.getElementById("linkTo").href = tab_images[compteur][1];
// On incrémente le compteur de 1 pour passer à l'image suivante
compteur++;
// Si on a atteint la dernière image, on remet à zéro le compteur et on rappelle la fonction Diaporama()
if (compteur==tab_images.length)
compteur=0;
setTimeout("Diaporama()",delai)
}
// On charge au démarrage de la page la fonction de défilement des images
window.onload=new Function("setTimeout('Diaporama()',delai)")
</SCRIPT>
[# ]
</html>
Pour le titre dans le tableau, je ne sais pas du tout.
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 4 juin 2007 à 09:38
Bien le bonjour, on va finir par faire un diaporama du tonnerre ;o)
Pour ce que tu as appeler un titre, tu veux l'afficher comment ?
j'ai fait ça :
<html>
<head>
<title>test img</title>
</head>
<SCRIPT language= JavaScript1.1>
//Suppression de code redondant, traduction des fonctions et variables en français, commentaires.
// Dossier où se situent vos images (si dans le même répertoire que le script, mettre un point -> var dossier="."; sinon mettre -> var dossier="img/diaporama";
var dossier=".";
// Le tableau qui va contenir vos images. Pour en rajouter, il suffit d'insérer la ligne suivante : tab_images[X]=""+dossier+"/nom_image.jpg";
// et de remplacer X par un numéro (différent des précédents)
var tab_images=new Array();
tab_images[0]=[dossier+"/img1.JPG", "http://tf1.fr", [Titre Image] ];
tab_images[1] =[dossier+"/img2.JPG", "http://france2.fr",[Titre Image];
tab_images[2]= [dossier+"/img3.JPG", "http://jimbert.net", [Titre Image] ];
// Le délai de passage d'une image à l'autre en millisecondes -> 1s =1000
var delai=5000;
// Variable de compteur qui indiquera à quelle image on se trouve
var compteur=1;
// La fonction qui va permettre le défilement
function Diaporama(){
// partie où on applique les filtres propres à IE
document.images.diaporama.src=tab_images[compteur][0];
// Affichage du titre sur l'image
document.images.diaporama.title=tab_images[compteur][2];
// Affichage du titre dans la barre de status
window.status = tab_images[compteur][2];
// liens
document.getElementById("linkTo").href = tab_images[compteur][1];
// On incrémente le compteur de 1 pour passer à l'image suivante
compteur++;
// Si on a atteint la dernière image, on remet à zéro le compteur et on rappelle la fonction Diaporama()
if (compteur==tab_images.length)
compteur=0;
setTimeout("Diaporama()",delai)
}
// On charge au démarrage de la page la fonction de défilement des images
window.onload=new Function("setTimeout('Diaporama()',delai)")
</SCRIPT>
[# ]
</html>
le titre s'affiche dans la barre de status de la fenêtre et lorsqu'on survol l'image.
il suffit de remplacer [Titre Image] par le bon titre ( toujours entre guillemets )
Je ne sais pas si c'est ce que tu attends, mais c'est on jamais.
nanie954
Messages postés12Date d'inscriptionjeudi 27 novembre 2003StatutMembreDernière intervention 3 novembre 2019 4 juin 2007 à 22:11
En attendant demain, voici le script: je le trouve super mais il me manque juste cette fonction pour agrandir la photo ou y mettre un lien. C'est un diaporama dans un formulaire.
Vous pouvez voir le rendu sur la page galerie boutique: http://www.lestraitsdekatia.fr Pensez vous que cela soit possible? je suis graphiste et c'est dur dur!
MErci
<!-- DEBUT DU SCRIPT DIAPORAMA-->
<script language="JavaScript" type="text/javascript">
var current = 0;
function next(){ // forward one image
if(document.formname.slide[current+1]){
document.images.show.src = document.formname.slide[current+1].value;
document.formname.slide.selectedIndex = ++current;}
else{first();}}
function previous(){ // back on image
if((current-1) >= 0){
document.images.show.src = document.formname.slide[current-1].value;
document.formname.slide.selectedIndex= --current;}
else{last();}}
function first(){ // jump to first image
current=0;
document.images.show.src = document.formname.slide[0].value;
document.formname.slide.selectedIndex=0;}
function last(){ // this is jump to last image
current=(document.formname.slide.length-1);
document.images.show.src = document.formname.slide[current].value;
document.formname.slide.selectedIndex=current;}
function ap(text){ // this controls the auto-play and/or auto-stop
document.formname.slidebutton.value=(text == "Stop") ? "Start" : "Stop";
rotate();}
function change(){ // this is for the pulldown menu
current=document.formname.slide.selectedIndex;
document.images.show.src = document.formname.slide[current].value;}
function rotate() {
if (document.formname.slidebutton.value == "Stop") {current (current document.formname.slide.length-1) ? 0 : current+1;
document.images.show.src = document.formname.slide[current].value;
document.formname.slide.selectedIndex = current;
window.setTimeout("rotate()", 3000);}}
// End --></script>
<form name="formname" action="#">
----
,
----
<select name="slide" size="1" onchange="change();" >
<option selected="selected" value="images/bout_01.jpg">Au Printemps</option>
<option value="images/vitri_03.jpg">Fraicheurs</option>
<option value="images/vitri_02.jpg">A vos Amours</option>
<option value="images/vitri_04.jpg">L'Eté Dernier</option>
<option value="images/bout_02.jpg">Depuis la porte</option>
<option value="images/bout_03.jpg">Douceurs Fauves</option>
<option value="images/bout_04.jpg">Fine Fraicheur</option>
<option value="images/bout_06.jpg">L'or des Terres</option>
<option value="images/vitri_05.jpg">Emaux Emus</option>
<option value="images/bout_07.jpg">Turquoises</option>
<option value="images/bout_08.jpg">Rouge Insolence</option>
<option value="images/vitri_07.jpg">Coquelicots des Villes</option>
<option value="images/bout_09.jpg">Du Seuil</option>
<option value="images/bout_10.jpg">Bois des Eaux</option>
<option value="images/bout_11.jpg">Muses Ecarlates</option>
<option value="images/vitri_01.jpg">Contrastes</option>
<option value="images/bout_12.jpg">Cerise du levant</option>
<option value="images/bout_14.jpg">Violettes de Verre</option>
<option value="images/vitri_06.jpg">Verres de Violette</option>
<option value="images/bout_13.jpg">Intime fantaisie</option>
</select>,
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 5 juin 2007 à 11:11
Bien le bonjour.
En m'appuyant sur le dernier script fournit, je propose :
<style>
/**
* Style appliqué pour le titre de l'image
*/
#comment{
text-align:center;
font-size:18px;
font-weight:bold;
width:100%;
}
</style>
<script language="JavaScript" type="text/javascript">
var current = 0;
function next(){ // forward one image
if(document.formname.slide[current+1]){
document.images.show.src = document.formname.slide[current+1].value;
initTitleAndLink(current+1);
document.formname.slide.selectedIndex = ++current;}
else{first();}}
function previous(){ // back on image
if((current-1) >= 0){
document.images.show.src = document.formname.slide[current-1].value;
initTitleAndLink(current-1);
document.formname.slide.selectedIndex= --current;
}
else{last();}}
function first(){ // jump to first image
current=0;
document.images.show.src = document.formname.slide[0].value;
initTitleAndLink(current);
document.formname.slide.selectedIndex=0;}
function last(){ // this is jump to last image
current=(document.formname.slide.length-1);
document.images.show.src = document.formname.slide[current].value;
document.formname.slide.selectedIndex=current;
initTitleAndLink(current);
}
function ap(text){ // this controls the auto-play and/or auto-stop
document.formname.slidebutton.value=(text == "Stop") ? "Start" : "Stop";
rotate();}
function change(){ // this is for the pulldown menu
current=document.formname.slide.selectedIndex;
document.images.show.src = document.formname.slide[current].value;
initTitleAndLink(current);
}
function rotate() {
if (document.formname.slidebutton.value == "Stop") {current (current document.formname.slide.length-1) ? 0 : current+1;
document.images.show.src = document.formname.slide[current].value;
document.formname.slide.selectedIndex = current;
initTitleAndLink ( current);
window.setTimeout("rotate()", 3000);}
}
/**
* Initialise le titre et le liens de l'image
*
* @param _index
* index de l'image en cours d'affichage
*/
function initTitleAndLink(_index){
// initialise le titre de l'image
document.getElementById("comment").innerHTML = document.formname.slide[_index].title;
// initialise le lien
document.getElementById("linkRel").href= document.formname.slide[_index].getAttribute("linkRel");
}
// End --></script>
<form name="formname" action="#">
----
J'ai rajouter une ligne ( id="comment" ) qui contient le titre/commentaire de l'image ( stocké dans l'attribut title des options )
puis j'ai rajouter l'attribut linkRel ( qui contient le liens vers lequel aller lors du click ) toujours sur options.
En espérant que cela réponde à la demande.
Attention, j'ai modifié le nom de images ( je ne possédais pas les bonnes ;o))
nanie954
Messages postés12Date d'inscriptionjeudi 27 novembre 2003StatutMembreDernière intervention 3 novembre 2019 5 juin 2007 à 11:54
bonjour,
ou lala je crois que ça ressemble fort à ce que je cherche! Je n'aurais pas le temps de le faire aujourd'hui, mais je te tiens au courant, merci merci!!
Nanie
nanie954
Messages postés12Date d'inscriptionjeudi 27 novembre 2003StatutMembreDernière intervention 3 novembre 2019 9 juin 2007 à 10:10
genial! merci à vous, à toi!
Je ne l'ai pas encore mis en ligne, mais je m'en occupe des que je peux car je sais que je ne suis pas la seule à chercher cette solution.
Le seul truc c'est que j'ai un petit soucis avec l'image selected du tableau qui est la meme que celle mise au dessus.
Plus de détail au prochain épisode!
a++
Nanie
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 12 juin 2007 à 09:45
Juste encore une petite bricole qui me chagrine un peu sur le site http://www.lestraitsdekatia.fr/DIAPORAMA.htm il faudrait voir pour implémenter un préchargement d'image parce que souvent ( pour le test, il suffit de vider le cache de l'explorateur ), les images s'affichent bien après leur titre du coup il y a un décallage qui n'est pas des plus "sympatique". Sinon, sympas les photos ;o)
faudrait aussi enlever les commentaires du messages
"J'ai rajouter une ligne ( id="comment" ) qui contient le
titre/commentaire de l'image ( stocké dans l'attribut title des options
)
puis j'ai rajouter l'attribut linkRel ( qui contient le liens vers
lequel aller lors du click ) toujours sur options." parce que ça fait pas top top