2016-03-23 6 views
0

Angesichts eines Skripts, das die Seitenleiste klebrig macht, wenn der Benutzer zu einem bestimmten Punkt (auf dem Desktop) scrollt, verursacht dies derzeit ein Problem, bei dem die Fußzeile am unteren Rand nicht angezeigt wird/Tablet-Geräte, aber gibt der Fußzeile eine unbegrenzt scrollbare Leerstelle. Wie kann ich das Skript darauf ausrichten, nur mit Desktop-Browsern zu arbeiten?Deaktivieren Sie die JavaScript-Funktion, wenn der Browser nicht Desktop ist

Ich habe versucht, den Desktop mit einer Variation von navigator.userAgent.match == "" zu targeting, aber das ist das Deaktivieren der Funktionalität.

Wenn der Benutzer von einem Handy/Tablet kommt, sollte die Fußzeile nur auf der Seite unten angezeigt werden, als ob die JavaScript-Funktion nicht geladen wäre.

$(function() { 
    var $sidebar = $(".related-articles"), 
    $window = $(window), 
    offset = $sidebar.offset(), 
    topPadding = 15; 

    $window.scroll(function() { 
    if ($window.scrollTop() > offset.top) { 
     $sidebar.stop().animate({ 
     marginTop: $window.scrollTop() - offset.top + topPadding 
     }, 1); 
    } else { 
     $sidebar.stop().animate({ 
     marginTop: 0 
     }, 1); 
    } 
    }); 
}); 

UPDATE: Hinzufügen $(window).width() > 767 && zu dem ersten, wenn(); Anweisung das Problem behoben.

+1

Stichwort: 'matchMedia' – CBroe

+1

Es klingt wie du bist versuchen, das falsche Problem zu beheben, das ist "warum erhält die Fußzeile unendlich scrollbare Leerzeichen auf kleineren Geräten?". –

+0

'if (window.innerWidth> 640)' sollte die meisten mobilen Geräte ausschließen. – Lewis

Antwort

2

Ich glaube, du bist für so etwas suchen:

if ($(window).width() > 739) {  
//Code here for any desktop 
} 
else { 
    //Code here for mobile 
} 

Sie Gerätebreite Größen finden Sie hier:

http://mydevice.io/devices/

Verwandte Themen