onScroll non funziona su firefox su mac

  • Creatore Discussione Creatore Discussione Rikk73
  • Data di inizio Data di inizio

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Ciao a tutti, non riesco a capire dove sta il problema.
Ho questo codice:

Codice:
$(document).ready(function () {
    $('#tornaSu').hide();
});
function showElementId(x) {
    var fraz = $('body').height() / 5;
    if ($('body').scrollTop() < fraz && $(x).is(':visible')) {
        $(x).fadeOut(1000);
    }
    else if ($('body').scrollTop() >= fraz && $(x).is(':hidden')) {
        $(x).fadeIn(1000);
    }
}
function tornaSu() {
    var target = $('body').offset().top;
    $('html,body').animate({ scrollTop: target }, 800);
}

dove showElementId è richiamato da <body onscroll="...">

Funziona perfettamente su Chrome (mac e win10) e Safari (mac), ma non da segni di vita su Firefox (mac).
Qualcuno sa dirmi come mai?
 
Ciao, x cos'è?
lo hai online per testarlo ?
 
ciao, no non è online, e al monento non ho possibilità di caricarlo.
Comunque sarebbe il classico bottone torna in cima alla pagina.
Se escludo la parte per mostrare o nascondere l'elemento in base sllo scroll, il bottone in se funziona, è solo che su firefox non fa il fade in quando dovrebbe, e non capisco come mai
 
Grazie lo stesso, ho risolto da solo.
Firefox (e IE ho visto) per intercettare lo scrollTop vogliono $('html,body') che però non funziona su Chrome e Safari che vogliono $('body'), e quindi ho risolto così:

Codice:
function showElementId(x, usAgent) {
    if(usAgent.toLowerCase().indexOf('firefox') != -1 || usAgent.toLowerCase().indexOf('msie') != -1){
        Firefox(x);
    }
    else{
        Chrome(x);
    }
}
function Firefox(x){
    var fraz = $('body').height() / 5;
    var brw = 'body,html';

    var fraz = $(brw).height() / 5;
    if ($(brw).scrollTop() < fraz && $(x).is(':visible')) {
        $(x).fadeOut(1000);
    }
    else if ($(brw).scrollTop() >= fraz && $(x).is(':hidden')) {
        $(x).fadeIn(1000);
    }
}
function Chrome(x){
    var fraz = $('body').height() / 5;
    var brw = 'body';

    var fraz = $(brw).height() / 5;
    if ($(brw).scrollTop() < fraz && $(x).is(':visible')) {
        $(x).fadeOut(1000);
    }
    else if ($(brw).scrollTop() >= fraz && $(x).is(':hidden')) {
        $(x).fadeIn(1000);
    }
}
function tornaSu() {
    var target = $('body').offset().top;
    $('html,body').animate({ scrollTop: target }, 800);
}
 
prova con
Codice:
$(window).scrollTop()
funziona su chrome e firefox su safari non so
 

Discussioni simili