Aller au contenu

Faire cohabiter 2 "window.onload"


yhugo

Sujets conseillés

Bonjour tous,

J'ai une page html qui contient 2 javascript différents ...

les 2 utilises la commande "window.onload" et ça empêche un des 2 scripts de fonctionner :nonono:

Comment s'y prendre pour les faire cohabiter ?

Merci et bonne fin de journée

yhugo

PS_Je suis débutant en JavaScript :thumbsdown:

Modifié par yhugo
Lien vers le commentaire
Partager sur d’autres sites

salut,

il doit y avoir 2 (ou plus) variables communes (enfin dont les noms sont communs) aux 2 scripts : il te suffra de modifier ce nom de variable dans l'un des 2 scripts et tout ira bien ;)

Lien vers le commentaire
Partager sur d’autres sites

salut,

il doit y avoir 2 (ou plus) variables communes (enfin dont les noms sont communs) aux 2 scripts : il te suffra de modifier ce nom de variable dans l'un des 2 scripts et tout ira bien ;)

Salut Georges,

j'ai regardé et aucune variable semble en doublon ...



<script type="text/javascript">
//<![CDATA[
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
//-->
//]]>
</script>


<script type="text/javascript">
//<![CDATA[
<!--
/***********************************************
* Conveyor belt slideshow script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at [url="http://www.dynamicdrive.com/"]http://www.dynamicdrive.com/[/url] for full source code
***********************************************/


//Specify the slider's width (in pixels)
var sliderwidth="490px"
//Specify the slider's height
var sliderheight="175px"
//Specify the slider's slide speed (larger is faster 1-10)
var slidespeed=1
//configure background color:
slidebgcolor="#FFFFFF"

//Specify the slider's images
var leftrightslide=new Array()
var finalslide=''
leftrightslide[0]='<img src="images/projets/smenu1_foto1.jpg" alt="image" />'
leftrightslide[1]='<img src="images/projets/smenu1_foto2.jpg" alt="image" />'
leftrightslide[2]='<img src="images/projets/smenu2_foto1.jpg" alt="image" />'
leftrightslide[3]='<img src="images/projets/smenu2_foto2.jpg" alt="image" />'
leftrightslide[4]='<img src="images/projets/smenu3_foto1.jpg" alt="image" />'
leftrightslide[5]='<img src="images/projets/smenu3_foto2.jpg" alt="image" />'
leftrightslide[6]='<img src="images/projets/smenu4_foto1.jpg" alt="image" />'
leftrightslide[7]='<img src="images/projets/smenu4_foto2.jpg" alt="image" />'
leftrightslide[8]='<img src="images/projets/smenu5_foto1.jpg" alt="image" />'
leftrightslide[9]='<img src="images/projets/smenu5_foto2.jpg" alt="image" />'
leftrightslide[10]='<img src="images/projets/smenu5_foto3.jpg" alt="image" />'
leftrightslide[11]='<img src="images/projets/smenu5_foto4.jpg" alt="image" />'

//Specify gap between each image (use HTML):
var imagegap=" "

//Specify pixels gap between each slideshow rotation (use integer):
var slideshowgap=3


////NO NEED TO EDIT BELOW THIS LINE////////////

var copyspeed=slidespeed
leftrightslide='<span style="white-space: nowrap;">'+leftrightslide.join(imagegap)+'<\/span>'
var iedom=document.all||document.getElementById
if (iedom)
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px;">'+leftrightslide+'<\/span>')
var actualwidth=''
var cross_slide, ns_slide

function fillup(){
if (iedom){
cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2
cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3
cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslide
actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidth
cross_slide2.style.left=actualwidth+slideshowgap+"px"
}
else if (document.layers){
ns_slide=document.ns_slidemenu.document.ns_slidemenu2
ns_slide2=document.ns_slidemenu.document.ns_slidemenu3
ns_slide.document.write(leftrightslide)
ns_slide.document.close()
actualwidth=ns_slide.document.width
ns_slide2.left=actualwidth+slideshowgap
ns_slide2.document.write(leftrightslide)
ns_slide2.document.close()
}
lefttime=setInterval("slideleft()",30)
}
window.onload=fillup

function slideleft(){
if (iedom){
if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8))
cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed+"px"
else
cross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+slideshowga
p+"px"

if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8))
cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed+"px"
else
cross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+slideshowga
p+"px"

}
else if (document.layers){
if (ns_slide.left>(actualwidth*(-1)+8))
ns_slide.left-=copyspeed
else
ns_slide.left=ns_slide2.left+actualwidth+slideshowgap

if (ns_slide2.left>(actualwidth*(-1)+8))
ns_slide2.left-=copyspeed
else
ns_slide2.left=ns_slide.left+actualwidth+slideshowgap
}
}


if (iedom||document.layers){
with (document){
document.write('')
if (iedom){
write('<div style="position:relative;width:'+sliderwidth+';height:'+sliderheight+';overflow:hidden">')
write('<div style="position:absolute;width:'+sliderwidth+';height:'+sliderheight+';background-color:'+slidebgcolor+'" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">')
write('<div id="test2" style="position:absolute;left:0px;top:0px"><\/div>')
write('<div id="test3" style="position:absolute;left:-1000px;top:0px"><\/div>')
write('<\/div><\/div>')
}
else if (document.layers){
write('<ilayer width='+sliderwidth+' height='+sliderheight+' name="ns_slidemenu" bgColor='+slidebgcolor+'>')
write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"><\/layer>')
write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"><\/layer>')
write('<\/ilayer>')
}
document.write('')
}
}
//-->
//]]>
</script>

Désolé pour ces bouts de code un peu long ...

Merci

Lien vers le commentaire
Partager sur d’autres sites

et tu es certain que les 2 fonctionnent séparément ? ce qui m'étonne, c'est que la fonction montre() attend un argument que le onload n'apporte pas...

Lien vers le commentaire
Partager sur d’autres sites

et tu es certain que les 2 fonctionnent séparément ? ce qui m'étonne, c'est que la fonction montre() attend un argument que le onload n'apporte pas...

Excuse-moi mais je ne comprends pas très bien ce que tu veux dire ... si j'inverse l'ordre des scripts dans la page, c'est le dernier qui apparaît dans le code qui marche ... et vice versa ...

Voici ce que fait ce script, celui qui utilise la fonction montre()

Merci

Lien vers le commentaire
Partager sur d’autres sites

le script est appelé dans la page par

<dt onclick="java script:montre();"><a href="#">Menu 1</a></dt>

c'est certainement à ce niveau que tu t'emmêles les pinceaux..

Lien vers le commentaire
Partager sur d’autres sites

yo !

je pense que c'est peut-être tout simplement car tu ne peux pas avoir 2 appel avec window.onload dans une même fenêtre. Pour faire essayede faire un détour par une fonction comme ceci :

window.onload = function() {
montre();
fillup();
// toutes les actions onload ...
}

Ca marche ?

Modifié par AntiStatic
Lien vers le commentaire
Partager sur d’autres sites

Tu peux aussi ajouter un évenement au onload pour chaque fonction que tu souhaites appeler au démarrage :

function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldonload();
func();
}
}
}

C'est bien utile si tu utilises un script externe qui à déjà modifié le onload, dans ce cas, il fonctionnera encore.

Steph

Lien vers le commentaire
Partager sur d’autres sites

Bon matin à tous :wacko:

Merci pour votre aide, j'ai opté finalement pour la proposition de AntiSatic et ça marche bien :)

window.onload = function() {
montre();
fillup();
// toutes les actions onload ...
}

Ce cas est donc résolu (Au fait, comment on fait pour indiquer Résolu à nos sujets ?)

Bonne journée et bonne fin de semaine !

yhugo

Modifié par yhugo
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...