Jump to content
Sign in to follow this  
yhugo

Faire cohabiter 2 "window.onload"

Rate this topic

Recommended Posts

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:

Edited by yhugo

Share this post


Link to post
Share on other 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 ;)

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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..

Share this post


Link to post
Share on other 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 ?

Edited by AntiStatic

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Edited by yhugo

Share this post


Link to post
Share on other sites

On ne met pas de [résolu] sur les sujets : ils pourraient décourager d'éventuelles lectures à quelqu'un qui ferait remonter le sujet.

Sinon, pour les codes longs, il faut utiliser la balise CODEBOX. j'ai édité tes messages en ce sens.

Share this post


Link to post
Share on other sites

Merci Captain,

La balise s'écrit donc codebox ?

J'aime bien ta citation en passant ...

Salutations

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...