Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonjour,

 

[win98se]

 

J'ai trouvé ce menu coulissant ( description : gris, à gauche, onMouseOver ) mais il ne s'affiche pas sous netscape 6.2 - mais fonctionne avec netscape 4.7 et internet explorer 5. Je n'ai pas encore les compétences pour le rendre compatible avec netscape 6.2 . Quelqu'un pourrait m'aider ?

 

Merci,

 

Léon

 

<html>

<head>

<!--

This file retrieved from the JS-Examples archives

http://www.js-examples.com

100s of free ready to use scripts, tutorials, forums.

Author: Thomas Brattli - http://www.bratta.com

-->

 

<style>

TD{font-family:arial,helvetica; font-size:10pt}

A{color:Navy; text-decoration:none}

A:hover{color:red}

A:visited:{color:#808080}

DIV{font-family:arial,helvetica; font-size:12pt; font-weight:bold}

</style>

<script>

/*Browsercheck:*/

ie=document.all?1:0

n=document.layers?1:0

 

//These are the variables you have to set:

 

//How much of the layer do you wan't to be visible when it's in the out state?

lshow=30

 

//How many pixels should it move every step?

var move=10;

 

//At what speed (in milliseconds, lower value is more speed)

menuSpeed=40

 

//Do you want it to move with the page if the user scroll the page?

var moveOnScroll=true

 

/********************************************************************************

You should't have to change anything below this.

********************************************************************************/

//Defining variables

var tim;

var ltop;

 

//Object constructor

function makeMenu(obj,nest){

nest=(!nest) ? '':'document.'+nest+'.'

this.css=(n) ? eval(nest+'document.'+obj):eval(obj+'.style')

this.state=1

this.go=0

this.width=n?this.css.document.width:eval(obj+'.offsetWidth')

this.left=b_getleft

this.obj = obj + "Object"; eval(this.obj + "=this")

}

//Get's the top position.

function b_getleft(){

var gleft=(n) ? eval(this.css.left):eval(this.css.pixelLeft);

return gleft;

}

/********************************************************************************

Deciding what way to move the menu (this is called onmouseover, onmouseout or onclick)

********************************************************************************/

function moveMenu(){

if(!oMenu.state){

clearTimeout(tim)

mIn()

}else{

clearTimeout(tim)

mOut()

}

}

//Menu in

function mIn(){

if(oMenu.left()>-oMenu.width+lshow){

oMenu.go=1

oMenu.css.left=oMenu.left()-move

tim=setTimeout("mIn()",menuSpeed)

}else{

oMenu.go=0

oMenu.state=1

}

}

//Menu out

function mOut(){

if(oMenu.left()<0){

oMenu.go=1

oMenu.css.left=oMenu.left()+move

tim=setTimeout("mOut()",menuSpeed)

}else{

oMenu.go=0

oMenu.state=0

}

}

/********************************************************************************

Checking if the page is scrolled, if it is move the menu after

********************************************************************************/

function checkScrolled(){

if(!oMenu.go) oMenu.css.top=eval(scrolled)+ltop

if(n) setTimeout('checkScrolled()',30)

}

/********************************************************************************

Inits the page, makes the menu object, moves it to the right place,

show it

********************************************************************************/

function menuInit(){

oMenu=new makeMenu('divMenu')

scrolled=n?"window.pageYOffset":"document.body.scrollTop"

oMenu.css.left=-oMenu.width+lshow

ltop=(n)?oMenu.css.top:oMenu.css.pixelTop;

oMenu.css.visibility='visible'

if(moveOnScroll) ie?window.onscroll=checkScrolled:checkScrolled();

}

 

//Initing menu on pageload

onload=menuInit;

</script>

 

 

</head>

<body>

 

<div id="divMenu" style="position:absolute; top:0; left:30; height:800; width:280; visibility:hidden; background-color: #CCCCCC; layer-background-color: #CCCCCC; border: 1px none #000000">

<div align="right">shim.gif </div>

</div>

</body>

</html>

 

PS: j'ai bien demandé de l'aide sur le site d'ou vient ce script mais nulle réponse pour l'instant.

Posté(e)

Vite fait...

Pour faire marcher un menu prévu pour IE avec Netscape6 / Gecko, il suffit de remplacer les document.all('xxx') par des document.getElementById('xxx') et après c'est tout pareil.

Ici ce script est un bel exemple d'obfuscation de code, et j'ai pas le temps de tout déméler pour refaire un truc qui marche pareil et qui soit écrit pareil...

Je m'amuserai à ça ce soir...

 

Cela dit, c'est tout à fait possible...

Posté(e)

Ah les enfoirés...

Carrément, au lieu de document.all('xxx') c'est xxx qui est utilisé (ca m'aide pas)

En plus, ils ont abusé de l'opérateur "?:" il va falloir tout refaire la déclaration de makeMenu()

:-(

Posté(e)

//Object constructor

function makeMenu(obj,nest){

nest=(!nest) ? '':'document.'+nest+'.'

 

if (n) this.css=eval(nest+'document.'+obj)

else if (ie) this.css=eval(obj+'.style')

else this.css=eval('document.getElementById(''+obj+'').style')

this.state=1

this.go=0

if (n) this.width=this.css.document.width

else if (ie) this.width=eval(obj+'.offsetWidth')

else this.width=eval('document.getElementById(''+obj+'').offsetWidth')

this.left=b_getleft

this.obj = obj + "Object"

eval(this.obj + "=this")

}

 

Je vais tester, voir si ca marche...

Posté(e)

Bon, c'est pas encore ça, mais c'est en bonne voie (ca scrolle gauche/droite).

Je continue plus tard...

Par contre, y'a besoin de plus de modifs que ca, paske Mozilla renvoie des tailles avec leurs unités, donc il faut utiliser des parseInt() à tout bout de champ...

Et qu'est-ce qu'il est crade, ce source... pfff... incroyable... ca part dans tous les sens !

Posté(e)

Ca y est, j'ai fini d'en mettre partout, ca marche...

C'est pas beau mais ca marche...

Qqu'un peut tester sous IE et Opera, siouplait ? J'ai ptêt cassé quequ'chose...

Accrochez-vous :


<html>

<head>

<!--

This file retrieved from the JS-Examples archives

[url="http://www.js-examples.com"]http://www.js-examples.com[/url]

100s of free ready to use scripts, tutorials, forums.

Author: Thomas Brattli - [url="http://www.bratta.com"]http://www.bratta.com[/url]

-->



<style>

TD{font-family:arial,helvetica; font-size:10pt}

A{color:Navy; text-decoration:none}

A:hover{color:red}

A:visited:{color:#808080}

DIV{font-family:arial,helvetica; font-size:12pt; font-weight:bold}

</style>

<script>

/*Browsercheck:*/

ie=document.all?1:0;

n=document.layers?1:0;



//These are the variables you have to set:



//How much of the layer do you wan't to be visible when it's in the out state?

lshow=30;



//How many pixels should it move every step?

var move=10;



//At what speed (in milliseconds, lower value is more speed)

menuSpeed=40;



//Do you want it to move with the page if the user scroll the page?

var moveOnScroll=true



/********************************************************************************

You should't have to change anything below this.

********************************************************************************/

//Defining variables

var tim;

var ltop;



//Object constructor

function makeMenu(obj,nest){

if (n) this.css=eval('document.'+obj)

else if (ie) this.css=eval(obj+'.style')

else this.css=eval('document.getElementById(''+obj+'').style')

this.state=1

this.go=0

if (n) this.width=this.css.document.width

else if (ie) this.width=eval(obj+'.offsetWidth')

else this.width=eval('document.getElementById(''+obj+'').offsetWidth')

this.left=b_getleft

} 



//Get's the top position.

function b_getleft(){

if (n) gleft=eval(this.css.left)

else if (ie) gleft=eval(this.css.pixelLeft)

else gleft=document.getElementById('divMenu').style.left

return gleft;

}

/********************************************************************************

Deciding what way to move the menu (this is called onmouseover, onmouseout or onclick)

********************************************************************************/

function moveMenu(){

if(!oMenu.state){

clearTimeout(tim)

mIn()

}else{

clearTimeout(tim)

mOut()

}

}

//Menu in

function mIn(){

if(parseInt(oMenu.left())>-oMenu.width+lshow){

oMenu.go=1

oMenu.css.left=parseInt(oMenu.left())-move

tim=setTimeout("mIn()",menuSpeed)

}else{

oMenu.go=0

oMenu.state=1

}

}



//Menu out

function mOut(){

if(parseInt(oMenu.left())<0){

oMenu.go=1

oMenu.css.left=parseInt(oMenu.left())+move

tim=setTimeout("mOut()",menuSpeed)

}else{

oMenu.go=0

oMenu.state=0

}

}

/********************************************************************************

Checking if the page is scrolled, if it is move the menu after

********************************************************************************/

function checkScrolled(){

if(!oMenu.go) oMenu.css.top=eval(scrolled)+parseInt(ltop)

if(!ie) setTimeout('checkScrolled()',30)

}

/********************************************************************************

Inits the page, makes the menu object, moves it to the right place,

show it

********************************************************************************/

function menuInit(){

oMenu=new makeMenu('divMenu')

scrolled=ie?"document.body.scrollTop":"window.pageYOffset"

oMenu.css.left=-oMenu.width+lshow

ltop=(ie)?oMenu.css.pixelTop:parseInt(oMenu.css.top);

oMenu.css.visibility='visible'

if(moveOnScroll) (ie)?window.onscroll=checkScrolled:checkScrolled();

}



</script>





</head>

<body onload="javascript:menuInit()">



<div id="divMenu" style="position:absolute; top:0; left:30; height:800; width:280; visibility:hidden; background-color: #CCCCCC; layer-background-color: #CCCCCC; border: 1px none #000000">

<div align="right"> <a href="#" onmouseover="moveMenu()"><img src="neptune.jpg" width="30" height="30" border="0"></a></div>

</div>

</body>

</html> 



Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...