Newsgroup: it.comp.lang.javascript
Titolo: [HELP] slide-menu su Opera

Ho il seguente slide-menu (potete vederlo su 
http://www.alessio.info/icl
),
scaricato da internet e riadattato alle mie esigenze. Non riesco però a
farlo funzionare su Opera, chi mi da' una mano?
<script language="JavaScript1.2">
ie=document.all?1:0
n=document.layers?1:0
ns6=document.getElementById&&!document.all?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=156
leftOffset=155
//How many pixels should it move every step?
var move=30;
//At what speed (in milliseconds, lower value is more speed)
menuSpeed=5
//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 ltop;
var tim=0;
//Object constructor
function makeMenu(obj,nest){
    nest=(!nest) ? '':'document.'+nest+'.'
    if (n) this.css=eval(nest+'document.'+obj)
    else if (ns6) this.css=document.getElementById(obj).style
    else if (ie) this.css=eval(obj+'.style')
 this.state=1
 this.go=0
        if (n) this.width=this.css.document.width
        else if (ns6) this.width=document.getElementById(obj).offsetWidth
        else if (ie) this.width=eval(obj+'.offsetWidth')
 this.left=b_getleft
    this.obj = obj + "Object";  eval(this.obj + "=this")
}
//Get's the top position.
function b_getleft(){
        if (n||ns6){ gleft=parseInt(this.css.left)}
        else if (ie){ gleft=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+leftOffset){
  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)+parseInt(ltop)
 if(n||ns6) setTimeout('checkScrolled()',30)
}
/***************************************************************************
*****
Inits the page, makes the menu object, moves it to the right place,
show it
****************************************************************************
****/
function menuInit(){
 oMenu=new makeMenu('divMenu')
        if (n||ns6) scrolled="window.pageYOffset"
        else if (ie) scrolled="document.body.scrollTop"
 oMenu.css.left=-oMenu.width+lshow
        if (n||ns6) ltop=oMenu.css.top
        else if (ie) ltop=oMenu.css.pixelTop
 oMenu.css.visibility='visible'
 //if(moveOnScroll) ie?window.onscroll=checkScrolled:checkScrolled();
    mOut();
}
//Initing menu on pageload
window.onload=menuInit;
</script>

 ns6=document.getElementById&&!document.all?1:0
in:
ns6=document.getElementById?1:0 // DOM W3C
ie=document.all&&!ns6?1:0 // IE 4
n=document.layers&&!ns6?1:0 // NS 4
In questo modo Opera (e IE 5+) ricadranno giustamente nel DOM W3C e non 
in quello proprietario di IE.
-- 
A risentirci
\  Davide G. Borin
\\ !!Scudo anti-spam attivo!! Togliere le x e "eliminami" dall'indirizzo
\\\_____________________________________________________________________

 e` cambiare l'ordine del detect:
ho provato ma non va... credo che il problema stia nella determinazione
della posizione della posizione dell'oggetto oMenu (proprietą left e width),
ma proprio non riesco a venire a capo. E non capisco perchč funziona con
Ntescape ed IE e non con Opera!

determinazione della posizione della posizione dell'oggetto oMenu
Forse con Opera non devi considerare la posizione in cui la pagina e` 
scrollata.
