Diaporama javascript avec un lien pour chaque image
cs_feldrik
Messages postés15Date d'inscriptionmercredi 10 décembre 2008StatutMembreDernière intervention11 décembre 2008
-
10 déc. 2008 à 11:04
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
11 déc. 2008 à 22:46
Bonjour, je bute sur un problème depuis des jours, et espère trouver sur ce forum une âme charitable pour me tirer de ce mauvais pas. Je veux faire un diaporama (sous dreamweaver) placé dans une div, avec un lien pour chaque image. J'ai trouvé moults scripts, en ai testé autant, mais sans jamais parvenir au résultat escompté (oui, attention, amateur).
J'aimerais, si possible, que l'on me guide pour que je puisse conserver la base de ce diaporama sympa, tout en accolant un lien à chaque image. Celui qui me tire de ce mauvais pas aura droit à toute ma cyber-estime !
voici le code du diaporama que je voudrais garder :
<head>
/* BOITE DU DIAPORAMA */
#boite_diapo { position:absolute;
width:205px;
height:100px;
top:0px;
left:31px;
background-color:none;
background-image:url(zi/b_rf_001_renard_polaire.jpg);} /* IL FAUT IMPERATIVEMENT QUE LE NOM DE L'IMAGE SOIT IDENTIQUE A CELUI DANS LE SCRIPT : tab_img[0]
/* image dans la boite du diaporama */
#img_diapo { width:205px;
height:100px;
filter: alpha(opacity=0); /* fondu pour internet explorer */
-moz-opacity:0; /* fondu pour mozilla, phoenix, firebird, firefox*/
opacity:0; /* fondu pour mozilla firefox */
-khtml-opacity:0.5; /* fondu pour konqueror et safari */
background-color:none;}
-->
</style>
<script language="javascript">
var imagesTodisplay = new Array;
var num=0;
imagesTodisplay[0] = "zi/b_rf_001_renard_polaire.jpg";// TOUJOURS COMMENCER PAR imagesTodisplay[0]
imagesTodisplay[1] = "zi/b_rf_002_cheval-przewalski.jpg";
imagesTodisplay[2] = "zi/b_rf_003_renne.jpg";
imagesTodisplay[3] = "zi/b_rf_004_boeuf_musque.jpg";
var tab_img = new Array; //tableau contenant les images
//numéro de l'image jouée
//Ajout d'un compte à rebours afin de jouer le diaporama
var timer_diapo=setInterval("diaporama('boite_diapo','img_diapo',500)",4000);
/* Explication des paramètres
'boite_diapo' : identifiant de la boite du diaporama. NE PAS MODIFIER
'img_diapo' : identifiant de l'image contenu dans la boite diaporama. NE PAS MODIFIER.
500 : temps (en milliseconde) de l'effet fondu entre 2 images. 1 seconde = 1000 millisecondes.
7000 : interval de temps entre 2 images. 1 seconde = 1000 millisecondes.
*/
//Fonction qui permet de jouer le diaporama
function diaporama(divid, imageid, millisec)
{
var speed = Math.round(millisec / 100);
var timer = 0;
for(i = 0; i <= 100; i++)
{
setTimeout("changeOpac(" + i + ",'" + imageid+ "')",(timer * speed));
timer++;
}
num++;
}
//Fonction qui attribue l'opacité à l'objet "image_diapo"
function changeOpac(opacity, id)
{
var object = document.getElementById(id).style;
object.opacity = (opacity / 100);
object.MozOpacity = (opacity / 100);
object.KhtmlOpacity = (opacity / 100);
object.filter = "alpha(opacity=" + opacity + ")";
}
type="text/javascript">
<!--
function MM_preloadImages() { //v3.0
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
</script>
</head>
</html>
J'attends vos réponses avec impatience,
Merci d'avance !
A voir également:
Diaporama javascript avec un lien pour chaque image
cs_feldrik
Messages postés15Date d'inscriptionmercredi 10 décembre 2008StatutMembreDernière intervention11 décembre 2008 10 déc. 2008 à 19:16
Bonjour et merci de ta réponse.
En fait, quand je place un événement onclick dans la div contenant l'image d'arrière plan, le lien n'est effectif que pour cette image d'arrière plan, quelle que soit l'image qui défile. Ce que je voudrais, c'est que chaque image qui défile ait son propre lien (image1/lien1, image2/lien2, imageetc./lienetc.), en plaçant des lignes directement dans le script. En quelque sorte, donner une propriété lien à chaque image pour que lorsque l'on clique dessus, on active ce lien.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 10 déc. 2008 à 19:58
tu peux par exemple
associer un équivalent URL
pour chaque imagesTodisplay[0]
var URL_ToDisplay = new Array();
var IMG_ToDisplay = new Array();
var i=0;
URL_ToDisplay[i] = "images_00.jpg";
IMG_ToDisplay[i++] =
"page_00.html";
URL_ToDisplay[i] = "images_01.jpg";
IMG_ToDisplay[i++] =
"page_01.html";
URL_ToDisplay[i] = "images_02.jpg";
IMG_ToDisplay[i++] =
"page_02.html";
et dans la fonction plus loin tu utilises num comme index des deux tableaux.
;O)
cs_feldrik
Messages postés15Date d'inscriptionmercredi 10 décembre 2008StatutMembreDernière intervention11 décembre 2008 10 déc. 2008 à 20:53
Encore merci, mais je vais faire mon Colombo... je comprends la logique, mais en l'état, le diaporama ne se lance plus (image arrière-plan fixe) et les liens ne sont pas actifs.
Je te place le code obtenu :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow, all" />
<meta name="author" content="Feldrik Rivat" />
<meta name="description" content="Aquarelles et gouaches animalières entrant dans le cadre de travaux de mise en valeur du patrimoine naturel." />
<meta name="keywords" CONTENT="renard polaire, alopex lagopus, feldrik rivat, peintre naturaliste, peintre animalier, portrait animalier, aquarelle naturaliste, gouache naturaliste " />
<title>Patrimoine naturel, aquarelles et gouaches animalières, le renard polaire, Feldrik Rivat</title>
<style type="text/css">
<!--
body {
margin : 0;
padding : 0;
text-align : center; /* c'est ça qui centre dans IE */
background-color: #000000;}
#conteneur {
position : relative;
margin : 0 auto; /* c'est ça qui centre dans les autres */
padding : 0;
text-align : left;
width : 890px; }
.Style47 {color: #E38B31}
.Style53 {color: #FFF89D}
#apDiv72 {
position:absolute;
left:0px;
top:154px;
width:197px;
height:567px;
z-index:1;
}
#apDiv73 {
position:absolute;
left:425px;
top:750px;
width:52px;
height:27px;
z-index:2;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: #FFF89D;
}
#apDiv75 {
position:absolute;
left:740px;
top:765px;
width:159px;
height:35px;
z-index:3;
}
.Style60 {color: #FFF89D;
font-size: 13px;
}
.Style61 {color: #FFFFFF}
/* BOITE DU DIAPORAMA */
#boite_diapo { position:absolute;
width:205px;
height:100px;
top:0px;
left:31px;
background-color:none;
background-image:url(zi/b_rf_001_renard_polaire.jpg);} /* IL FAUT IMPERATIVEMENT QUE LE NOM DE L'IMAGE SOIT IDENTIQUE A CELUI DANS LE SCRIPT : tab_img[0]
/* image dans la boite du diaporama */
#img_diapo { width:205px;
height:100px;
filter: alpha(opacity=0); /* fondu pour internet explorer */
-moz-opacity:0; /* fondu pour mozilla, phoenix, firebird, firefox*/
opacity:0; /* fondu pour mozilla firefox */
-khtml-opacity:0.5; /* fondu pour konqueror et safari */
background-color:none;}
-->
</style>
<script language="javascript">
var imagesTodisplay = new Array;
var num=0;
imagesTodisplay[0] = "zi/b_rf_001_renard_polaire.jpg";// TOUJOURS COMMENCER PAR imagesTodisplay[0]
imagesTodisplay[1] = "zi/b_rf_002_cheval-przewalski.jpg";
imagesTodisplay[2] = "zi/b_rf_003_renne.jpg";
imagesTodisplay[3] = "zi/b_rf_004_boeuf_musque.jpg";
//tableau contenant les images
//numéro de l'image jouée
var URL_ToDisplay = new Array();
var numo=0;
URL_ToDisplay[0] = "zoomfaune001_renard_polaire_alopex_lagopus.html";
URL_ToDisplay[1] = "zoomfaune002_cheval_przewalski_equus_przewalskii.html";
URL_ToDisplay[2] = "zoomfaune003_renne_caribou_rangifer_tarandus.html";
URL_ToDisplay[3] = "zoomfaune004_boeuf_musque_ovibos_moschatus.html";
var O_Div = document.getElementById(divid);
var szLien = URL_ToDisplay[numo];
var szImage = imagesTodisplay[num];
//Ajout d'un compte à rebours afin de jouer le diaporama
var timer_diapo=setInterval("diaporama('boite_diapo','img_diapo',500)",4000);
/* Explication des paramètres
'boite_diapo' : identifiant de la boite du diaporama. NE PAS MODIFIER
'img_diapo' : identifiant de l'image contenu dans la boite diaporama. NE PAS MODIFIER.
500 : temps (en milliseconde) de l'effet fondu entre 2 images. 1 seconde = 1000 millisecondes.
7000 : interval de temps entre 2 images. 1 seconde = 1000 millisecondes.
*/
//Fonction qui permet de jouer le diaporama
function diaporama(divid, imageid, millisec)
{
var speed = Math.round(millisec / 100);
var timer = 0;
Mais le problème persiste : le diaporama ne se lance plus, et les liens restent inactifs.
quand je retire les lignes :
document.getElementById(divid).style.backgroundImage = "url(" + szImage + ")";
document.getElementById(divid).onclick = function(){ alert( szLien)}
Le diaporama se relance. Le conflit doit être autour de " document.getElementById(divid) "
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 10 déc. 2008 à 22:24
YO! tu ne mets pas les lignes au bon endroit
voici la partie script comme tu devrait la trouver dans ta page...
<script language= "javascript">
var num = 0; //numero de l'image jouee
//-- tableau contenant les images
var imagesTodisplay = new Array();
imagesTodisplay[0] =
"zi/b_rf_001_renard_polaire.jpg";
imagesTodisplay[1] =
"zi/b_rf_002_cheval-przewalski.jpg";
imagesTodisplay[2] =
"zi/b_rf_003_renne.jpg";
imagesTodisplay[3] =
"zi/b_rf_004_boeuf_musque.jpg";
//--tableau contenant
les URL
var URL_ToDisplay = new Array();
URL_ToDisplay[0] =
"zoomfaune001_renard_polaire_alopex_lagopus.html";
URL_ToDisplay[1] =
"zoomfaune002_cheval_przewalski_equus_przewalskii.html";
URL_ToDisplay[2] =
"zoomfaune003_renne_caribou_rangifer_tarandus.html";
URL_ToDisplay[3] =
"zoomfaune004_boeuf_musque_ovibos_moschatus.html";
//Ajout d'un compte a rebours afin de jouer le diaporama
var timer_diapo =
setInterval("diaporama('boite_diapo','img_diapo',500)", 1000);
//Fonction qui permet de jouer le diaporama
function diaporama(divid, imageid, millisec) {
var speed =
Math.round(millisec / 100);
var timer = 0;
var O_Div =
document.getElementById(divid);
var szLien = URL_ToDisplay[num];
var
szImage = imagesTodisplay[num];
O_Div.style.backgroundImage = "url(" +
szImage + ")";
//-- c'est ici que tu mets ce que tu fais sur le onclick
O_Div.onclick = function() {
alert(szLien)
}
changeOpac(0, imageid);
if (num > (imagesTodisplay.length - 2)) {
num = -1;
}
document.getElementById(imageid).style.backgroundImage = "url(" +
imagesTodisplay[num + 1] + ")";
for (i = 0; i <= 100; i++) {
cs_feldrik
Messages postés15Date d'inscriptionmercredi 10 décembre 2008StatutMembreDernière intervention11 décembre 2008 10 déc. 2008 à 22:49
Tout de suite, ça paraît plus propre ! Le diaporama fonctionne, les images sont actives, mais dernier souci : ce n'est pas la page souhaitée qui s'affiche, mais un message :
[application javascript] ! zoomfaune003_renne_caribou_rangifer_tarandus.html
dans un petit popup...
Pourtant, les adresses lien sont bonnes (et si je remplace zoomfaune003_renne_caribou_rangifer_tarandus.html par http://www.feldrik-rivat-illustrateur.fr/zoomfaune003_renne_caribou_rangifer_tarandus.html, ça ne change que le contenu du message...)
C'est embêtant
ce n'est pas la page souhaitée qui s'affiche,
mais un
message
</td>
</td>
</tr>
</tbody>
</table>normal
c'est ce que fait la fonction sur le onclick, comme mis dans le script
//-- c'est ici
que tu mets ce que tu fais sur le onclick
O_Div.onclick =
function() {
alert(szLien)
}
à toi de mettre ce que tu veux
faire dans la fonction à la place de alert(szLien)
cs_feldrik
Messages postés15Date d'inscriptionmercredi 10 décembre 2008StatutMembreDernière intervention11 décembre 2008 10 déc. 2008 à 23:36
Merci ! Tu m'as rendu un fier service aujourd'hui, car ça fait un bout de temps que je cherche sur le net sans trouver la réponse à mon problème. Pour ce qui est de la fonction à mettre à la place de alert(szlien), j'ai bien window.open, mais je cherche plutôt quelque chose qui ouvre dans la même fenêtre.
Encore mille merci,
et peut-être à bientôt (je n'ai sans dout pas fini de jouer au boulot du net...)
cs_feldrik
Messages postés15Date d'inscriptionmercredi 10 décembre 2008StatutMembreDernière intervention11 décembre 2008 11 déc. 2008 à 00:04
En réalité, je ne trouve pas la bonne commande. window.top.location ne fonctionne pas, window.self.location non plus. Je cherche juste de quoi ouvrir ces liens dans la même fenêtre.
cs_feldrik
Messages postés15Date d'inscriptionmercredi 10 décembre 2008StatutMembreDernière intervention11 décembre 2008 11 déc. 2008 à 16:19
Après quelques recherches, j'ai remplacé window.open(szlien); par window.location.assign(szlien);
La chose semble fonctionner, mais est-ce une réponse conventionnelle ?
</td>
</tr>
</tbody>
</table>Il est trés
souvent utilisé document.location.href =
nom_Url, mais ta solution convient tout à fait.
Laisses nous un lien que
l'on aille voir le résultat.
;O)