salve,

ho scaricato questo script da internet: http://www.jtricks.com/javascript/na...floating.html.
l'ho un po modificato poichè a me serviva solo il floating verticale.
il problema comunque esiste anche con lo script originale.

in pratica, il menu scorre assiemo allo scroll della pagina; quando si arriva in fondo il menu si ferma a poca distanza dal lato inferiore della finestra. il problema nasce quando questa finestra è più piccola del menu stesso, cioè quando l'altezza del menu supera l'altezza della pagina. scorrendo il menu segue lo scroll della pagina come deve fare però questa volta quando raggiunge il fondo della pagina, non si ferma e continua all'infinito. sicuramente un esempio sarà più chiaro : http://www.museodiartepovera.com/nuo...isco/index.htm

questo invece lo script:

Codice PHP:
/* Script by: [url]www.jtricks.com[/url]
 * Version: 20071210
 * Latest version:
 * [url]www.jtricks.com/javascript/navigation/floating.html[/url]
 */

var floatingMenuId 'menu';
var 
floatingMenu =
{
    
    
targetY223,

    
hasInnertypeof(window.innerWidth) == 'number',
    
hasElementdocument.documentElement && document.documentElement.clientWidth,

    
menudocument.getElementById document.getElementById(floatingMenuId) : document.all document.all[floatingMenuId] : document.layers[floatingMenuId]
};

floatingMenu.move = function ()
{
    if (
document.layers) {floatingMenu.menu.top floatingMenu.nextY;}
    else {
floatingMenu.menu.style.top floatingMenu.nextY 'px';}
}

floatingMenu.computeShifts = function ()
{
    var 
de document.documentElement;
    
floatingMenu.shiftY floatingMenu.hasInner pageYOffset floatingMenu.hasElement de.scrollTop  document.body.scrollTop;
}

floatingMenu.doFloat = function()
{
    var 
stepY;

    
floatingMenu.computeShifts();

    
stepY = (floatingMenu.shiftY floatingMenu.targetY floatingMenu.nextY) * .07;
    
    if (
Math.abs(stepY) < .5)
    {
        
stepY floatingMenu.shiftY floatingMenu.targetY floatingMenu.nextY;
    }
    
    if (
Math.abs(stepY) > 0)
    {
        
floatingMenu.nextY += stepY;
        
floatingMenu.move();
    }

    
setTimeout('floatingMenu.doFloat()'20);
};

// addEvent designed by Aaron Moore
floatingMenu.addEvent = function(elementlistenerhandler)
{
    if(
typeof element[listener] != 'function' || typeof element[listener '_num'] == 'undefined')
    {
        
element[listener '_num'] = 0;
        if (
typeof element[listener] == 'function')
        {
            
element[listener 0] = element[listener];
            
element[listener '_num']++;
        }
        
element[listener] = function(e)
        {
            var 
true;
            
= (e) ? window.event;
            for(var 
element[listener '_num'] -1>= 0i--)
            {
                if(
element[listener i](e) == false)
                    
false;
            }
            return 
r;
        }
    }

    
//if handler is not already stored, assign it
    
for(var 0element[listener '_num']; i++)
        if(
element[listener i] == handler) return;
    
element[listener element[listener '_num']] = handler;
    
element[listener '_num']++;
};

floatingMenu.init = function()
{
    
floatingMenu.initSecondary();
    
floatingMenu.doFloat();
};

// Some browsers init scrollbars only after
// full document load.
floatingMenu.initSecondary = function()
{
    
floatingMenu.computeShifts();
    
floatingMenu.nextY floatingMenu.shiftY floatingMenu.targetY;
    
floatingMenu.move();
}

if (
document.layers)
    
floatingMenu.addEvent(window'onload'floatingMenu.init);
else
{
    
floatingMenu.init();
    
floatingMenu.addEvent(window'onload'floatingMenu.initSecondary);